Про 2 байта длину пакета?
Ну условно мне нужно отправить с клиента на сервер куда игрок двигается. Например это будет Vector2 - 2 флоата (по 4 байта на каждый), т.к. обычно движение в плоскости. Тогда размер пакета это 4+4 за vector2 + 2 байта идентификатор пакета (т.е. всего может быть 65536 разных типов пакетов) +2 байта сам размер пакета. (Т.е. максимальный размер пакета 65536) Итого размер 12 байт. Значит в первые 2 байта пишу число 12. Потом в следующие 2 байта идентификатор, например 1, потом сами данные. Каждый пакет сам разбирается в каком порядке писать свои данные и в квуом читать.
На сервере соотвктственно я читаю 2 байта как short значение, получаю 12 (или скольуо там пришло). Пытаюсь прочитать оставшиеся 12-2 =10 байт. Мне приходит в буфер, и сколько пришло я знаю. Если пришло меньше - жду пока не придет еще. Потом создаю объект команды по идентификатору (следующие 2 байта) и ему уже отдаю оставшиеся 8 байт прочитать. А дальше в цикле снова читаю 2 байта и т.д.
Ошибка в вычислениях в 36й строке. По скобкам сначала вычисляется 256/height и если height больше 256 результатом будет 0 и width умножится на 0. Или сначала width на 256 умножать или 256d использовать как double. И там перед этим каст к double лишний.
Ну из условия вопроса это было не очевидно. Возможно стоит рассмотреть другие условия. Например если тележка может делать сальто только в воздухе, то смотреть не события нажатия на кнопку, а событие когда оторвалась от земли и до приземления. Чем точнее сформулируешь условия тем легче будет найти решение.
Переделывать то, что прилетает. Т.е. не SQL Insert принимать (потенциальная SQL-инъекция), а данные, на основе которых строить запрос в БД. Иначе только парсить.
conString может null и соответственно не достается из твоего Configuration["ConnectionStrings:DefaultConnection"] выше? Давай разворачивай логическую цепочку дебага.