Исключение Wince Socket при асинхронном HTTP-запросе - PullRequest
0 голосов
/ 22 сентября 2011

Я пишу приложение WinCE на C #, которое делает HTTP POST для сервера APACHE, находящегося в моей сети. Из-за некоторых проблем с сетью (я предполагаю), я получаю следующее исключение в управляемом коде

System.Net.Sockets.SocketException occurred
    Message="A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond"
    ErrorCode=10060  
    NativeErrorCode=10060
    StackTrace:
       at System.Net.Sockets.Socket.ConnectNoCheck(EndPoint remoteEP)
       at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
       at System.Net.Connection.doConnect(IPEndPoint ep)
       at System.Net.Connection.connect(Object ignored)
       at System.Threading.ThreadPool.WorkItem.doWork(Object o)
       at System.Threading.Timer.ring()

Это исключение не всегда выдается, но когда оно выбрасывается, моему приложению не удается подключиться к серверу ВСЕ. Повторные попытки подключения также не помогают при повторном подключении. Единственное, что помогает, это закрытие и повторное развертывание приложения.

Я не могу поймать исключение, потому что оно внутри управляемого кода. Есть ли способ обойти это и закрыть все сокетные соединения с моим сервером и повторно инициализировать их? Что-то я делаю не так?

1 Ответ

2 голосов
/ 22 сентября 2011

Сообщение об исключении выглядит немного вводящим в заблуждение (« соединение попытка не удалась, потому что подключено сторона»), но я думаю, что это означает, что ваше оборудование взаимодействует с сервером, но серверне принимает соединение на уровне TCP.

Проблема, о которой я мог подумать, это «зависание» соединений, заставляющее сервер достигать максимального количества одновременных соединений и прекращать прием новых.

Хотя это всего лишь предположение, вы можете проверить журнал apache, если можете узнать, можете ли вы узнать, сообщает ли сервер что-либо, и, возможно, попробовать перезапустить apache, как только проблема возникнет снова.Если это помогает, вам все равно нужно найти причину.

...