"Поток был прерван" в вызове службы WCF

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

Я получаю это исключение, когда мой клиент wcf вызывает службу wcf, размещенную в IIS на рабочем сервере.

Ex. сообщ: Thread was being aborted.

Экс стека:

в System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr socketHandle, Byte* pinnedBuffer, Int32 len, SocketFlags socketFlags) в System.Net.Sockets.Socket.Receive(байт [], смещение Int32, размер Int32, SocketFlags socketError, SocketFlags socketError, errorCode) в System.Net.Sockets.NetworkStream.Read(буфер Byte[], смещение Int32, размер Int32) в System.Net.PooledStream.Read(буфер Byte[], смещение Int32, размер Int32) в System.Net.Connection.SyncRead(запрос HttpWebRequest, Boolean userRetrievedStream, Boolean probeRead) в System.Net.ConnectStream.ProcessWriteCallDone(ConnectionReturnResult returnResult) в System.Net.ConnectStream.CallDone(ConnectionReturnResult returnResultStreamStreamStreamStreamStreamStreamStriteStriteStream.Write) в System.Net) в System.Net.HttpWebRequest.EndWriteHeaders_Part2() в System.Net.HttpWebRequest.EndWriteHeaders(логический асинхронный) в System.Net.HttpWebRequest.WriteHeadersCallback(WebExceptionStatus errorStatus в качестве потока при входе) ystem.Net.ConnectStream.WriteHeaders(логическое асинхронное) в System.Net.HttpWebRequest.EndSubmitRequest() в System.Net.HttpWebRequest.GetResponse() в System.ServiceModel.Channels.HestpChannelFactquHortRehan.pan System.ServiceModel.Channels.RequestChannel.Request(сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request(сообщение-сообщение, время ожидания TimeSpan) в System.ServiceModel.Channels.ServiceChannel.Call(действие String on, Boole String Операция ProxyOperationRuntime, входы Object[], выходы Object[], тайм-аут TimeSpan) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(операция IMethodCallMessageCall, ProxyOperationRuntime) в System.ServiceModel.Channels.SessageInkeke (сообщение) Systemkehan (System.SecviceChan).Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, тип Int32) в StationService.IStationService.GetCurrentStationTrack(String stationId) в StationService.StationServiceClient.GetCurrentStationTrack(String stationId) в GetSongJS.getMarq(String radioIdentifier)

Я использовал PRTG Ipmonitor, и он выдает мне слишком много запросов на датчик "Requests Current". Мой сайт становится доступным в браузере. Если удалить эту страницу, которая вызывает службу все будет в порядке.

2 ответа

Похоже, вы не закрываете клиент WCF.

Я думаю, что происходит:

  • Пользователь вызывает страницу aspx
  • Страница ASPX вызывает сервис
  • Страница ASPX возвращается к пользователю
  • клиент службы не закрыт, поэтому запрос открыт и количество текущих запросов велико
  • в итоге у вас есть максимальное количество открытых запросов
  • страница ожидает свободного соединения, когда она не получает тайм-аут страницы ASPX
  • затем вы получите исключение прерывания потока из таймаута

Есть ли Response.Redirect(url) звонить после того, как клиентский прокси делает свой звонок? Перегрузка с одним аргументом прервет текущий поток, что приведет к появлению многих из этих типов ошибок в журналах. Иногда страница перестает работать, и этого не происходит, но переключение на другую загруженную среду часто является триггером.

Другие вопросы по тегам