Является блок в Глобальном кэше сборок (GAC) или каком-либо месте силой переопределить блок, что Вы думаете, загружается? Это обычно - результат неправильного загружаемого блока, для меня это означает, что у меня обычно есть что-то в GAC переопределение версии, которую я имею в мусорном ведре/Отладке.
Возможно, вы не полностью читаете Сообщение 2, оставляя некоторые данные в сокете (перевод строки, нулевой символ и т. Д.). Когда вы затем пытаетесь прочитать Сообщение 5, вы вместо этого читаете эти данные, и ваша программа завершается до того, как сервер фактически отправит Сообщение 5.