У нас есть приложение для Windows, оно подключается к веб-службе (веб-служба XML, размещенная на Windows 2008 Server IIS 7.5, без антивируса) и передает некоторые данные клиенту. Но иногда (около 5-10% запросов) выдает ошибку при попытке подключения веб-службы.
Вот журнал ошибок клиентского приложения;
Exception:System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly.
at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()
at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object& internalAsyncState, Stream& responseStream)
at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)
at APPClient.APPFPService.WEBService.EndAddMoney(IAsyncResult asyncResult)
at APPClient.BLL.ServiceAgent.AddMoneyCallback(IAsyncResult ar)
С другой стороны, на веб-сервере я проверил журналы ошибок HTTP и увидел такой длинный файл;
2014-06-05 14:02:04 65.82.178.73 53798 SERVER.IP.ADDRESS 80 - - - - - Timer_ConnectionIdle -
2014-06-05 14:07:24 76.109.81.223 58985 SERVER.IP.ADDRESS 80 - - - - - Timer_ConnectionIdle -
2014-06-05 14:07:39 76.109.81.223 2803 SERVER.IP.ADDRESS 80 - - - - - Timer_ConnectionIdle -
2014-06-05 14:08:59 76.109.81.223 52656 SERVER.IP.ADDRESS 80 - - - - - Timer_ConnectionIdle -
2014-06-05 14:09:05 65.82.178.73 53904 SERVER.IP.ADDRESS 80 HTTP/1.1 POST /webservice/webservice.asmx - 2 Timer_EntityBody SYPService
2014-06-05 14:10:55 50.186.180.191 50648 SERVER.IP.ADDRESS 80 - - - - - Timer_ConnectionIdle -
Вот похожая ситуация, но мне это не помогло.
ОБНОВИТЬ: Когда я проверил журналы IIS, я обнаружил такие проблемы;
cs-method cs-uri-stem sc-status sc-win32-status time-taken cs-version
POST /webservice/webservice.asmx 400 64 46 HTTP/1.1
POST /webservice/webservice.asmx 400 64 134675 HTTP/1.1
POST /webservice/webservice.asmx 400 64 37549 HTTP/1.1
POST /webservice/webservice.asmx 400 64 109 HTTP/1.1
POST /webservice/webservice.asmx 400 64 31 HTTP/1.1
POST /webservice/webservice.asmx 400 64 0 HTTP/1.1
POST /webservice/webservice.asmx 400 64 15 HTTP/1.1
sc-win32-status 64 : Указанное сетевое имя больше не доступно.
sc-status 400 : Неверный запрос
Также некоторые запросы занимают около 130 секунд, но некоторые - менее 1 секунды. Это приложение для Windows, которое подключается к веб-службе для обработки некоторых данных. Нет запроса, который занимает около 130 секунд в базе данных.
из журнала IIS. он показывает, что веб-сервис недоступен или недоступен "/webservice/webservice.asmx 400". Запустите веб-службу отдельно, чтобы убедиться, что веб-служба запущена и работает на том же сервере, где размещена служба Windows. Также это может быть проблема сети, если служба Windows и веб-служба находятся в разных местах.
Вы смотрите журналы HTTPERR, но это может быть не вся история.
Здесь есть ссылка на то, что означает каждый код: 820729 Короче говоря, единственная проблема, о которой говорилось выше, - это POST, который был запрещен из-за слишком длительного выполнения (Timer_EntityBody - т.е. тело объекта не было получено до истечения времени ожидания, настроенного для HTTPAPI из вашего приложения).
Неясно, размещаете ли вы это приложение в IIS, но я бы посоветовал, если вы получаете эти ошибки, исследовать их на уровне приложения (\ inetpub \ logs \ w3svcxxx), а не на уровне системы (\ windows \ system32 \ logfiles \ httperr).
Журналы приложений могут содержать любые ошибки, проблемы или рывки на уровне приложения, а также могут быть свидетельства в журнале событий приложений в EventVwr.