Первый вызов веб-службы через WLAN вызывает исключение в Wince 5.0 - PullRequest
0 голосов
/ 13 апреля 2010

Я разработал приложение, которое работает на устройстве с Wince 5.0. Я делаю звонки через веб-сервис с использованием WLAN. Приложение работает нормально, если сервер приложений подключен к локальной сети. В другом случае это вызывает исключение только в первый раз, когда приложение пытается связаться с сервером приложений. Если приложение запускается во второй раз, оно не вызывает никаких исключений.

Трассировка стека:

Вторник, 13 апреля 2010 г. - 10:03:04 невозможно подключиться к удаленному серверу в System.Net.HttpWebRequest.finishGetResponse () в System.Net.HttpWebRequest.GetResponse () в System.Web.Services.Protocols.WebClientProtocol.GetWebResponse (запрос WebRequest) в System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse (запрос WebRequest) в System.Web.Services.Protocols.SoapHttpClientProtocol.doInvoke (String methodName, Object [] параметры, WebClientAsyncResult asyncResult) в Aarya.Service.MIDServiceProxy.ManagementService.MIDAuthenticateLoginandRole (String sUsername, String sPassword) в Aarya.Modules.MID.ProxyWrapper.ManagementServiceWrapper.MIDAuthenticateLoginandRole (String sUsername, String sPassword) в Aarya.MID.AuthenticateManager.Logon (String loginName, String password) в Aarya.MID.Shell.PerformAsyncLogin ()


Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не смог ответить в System.Net.Sockets.Socket.ConnectNoCheck (EndPoint remoteEP) в System.Net.Sockets.Socket.Connect (EndPoint remoteEP) на System.Net.Connection.doConnect (IPEndPoint ep) в System.Net.Connection.connect (объект игнорируется) в System.Threading.ThreadPool.WorkItem.doWork (Объект o) в System.Threading.Timer.ring ()

1 Ответ

0 голосов
/ 13 апреля 2010

Я предполагаю, что при первом запуске у вас нет сетевого подключения. Ваш вызов веб-службы затем вызывает диспетчер соединений, который затем включает радио, связывается с сервером DHCP, получает адрес, а затем создает сетевое соединение.

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

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

...