NetworkStream.Read IO.Exception при развернутом приложении - PullRequest
0 голосов
/ 26 апреля 2011

Я занимаюсь разработкой приложения C # clent / server на основе двух служб Windows, которые настроены на клиентской (.NET 2) машине и Windows Server 2003.

Иногда я получаю исключение

Невозможно прочитать данные из транспортного соединения. Существующее соединение было принудительно закрыто удаленным хостом

Это не происходит в постоянный период времени. От перезапуска службы на сервере до момента возникновения исключения может пройти 2 недели или даже 1 день.

Как мне исправить эту проблему?

Спасибо

1 Ответ

1 голос
/ 26 апреля 2011

Звучит как периодически возникающие проблемы в сети.Это довольно часто встречается в беспроводных сетях, а также может время от времени происходить в проводных сетях (Ethernet не является детерминированным протоколом).Причины могут быть разными.Однако в дополнение к устранению проблем с сетью я настоятельно рекомендую сделать вашу службу устойчивой к сетевым проблемам.

(Вспомните простой случай, когда кто-то на короткое время отключает сетевой кабель сервера: если ваше приложениеаварийно завершает работу с необработанным исключением, требуется вмешательство администратора, чтобы запустить его снова. Вы не хотите этого. Это плохое поведение для службы.)

Таким образом, ваша служба должна перехватывать исключения ввода-вывода, делать записьв журнал приложений Windows и повторите операцию чуть позже (чтобы избежать переполнения журнала событий или создания ненужной нагрузки на машину или сеть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...