У меня есть толстый VB.NET Winform клиент, который использует старый веб-сервис в стиле asmx. Очень часто, когда я выполняю запрос, который занимает некоторое время или передает большое количество данных веб-службе в наборе данных, я получаю сообщение об ошибке субъекта.
Ошибка возникает через <1 мин, что намного меньше установленного мною значения времени ожидания веб-службы или значения времени ожидания объекта команды ADO, выполняющего запрос на веб-сервере. </p>
Кажется, это происходит всякий раз, когда я выполняю большой запрос, который ожидает вернуть много строк, или когда я отправляю большой объем данных в веб-службу. Например, это произошло, когда я передавал большой набор данных на веб-сервер:
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Smit.Pipeline.Bo.localhost.WsSR.SaveOptions(String emailId, DataSet dsNeighborhood, DataSet dsOption, DataSet dsTaskApplications, DataSet dsCcUsers, DataSet dsDistinctUsers, DataSet dsReferencedApplications) in C:\My\Code\Pipeline2\Smit.Pipeline.Bo\Web References\localhost\Reference.vb:line 944
at Smit.Pipeline.Bo.Options.Save(TaskApplications updatedTaskApplications) in
Я искал массу сообщений об этой ошибке, и удивительно, насколько разнообразны обстоятельства, которые вызывают эту ошибку. Я пытался связываться с Wireshark, но я не знаю, как его использовать.
Это приложение имеет только около 20 пользователей одновременно, и я могу воспроизвести эту ошибку посреди ночи, когда, вероятно, никто не использует приложение, поэтому я не думаю, что количество запросов к веб-сервер или база данных высока. Я, наверное, единственный человек, использующий приложение прямо сейчас, и я только что получил ошибку сейчас. Похоже, что нужно все делать с количеством данных, передаваемых в любом направлении.
Эта ошибка действительно хроническая и убивает меня. Пожалуйста, помогите.