"Поток был прерван" в вызове службы 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)
звонить после того, как клиентский прокси делает свой звонок? Перегрузка с одним аргументом прервет текущий поток, что приведет к появлению многих из этих типов ошибок в журналах. Иногда страница перестает работать, и этого не происходит, но переключение на другую загруженную среду часто является триггером.