«Поток был прерван» в вызове службы WCF - PullRequest
1 голос
/ 28 сентября 2010

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

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

Ex. сообщение: Thread was being aborted.

Ex стек:

в System.Net.UnsafeNclNativeMethods.OSSOCK.recv (IntPtr socketHandle, Byte * pinnedBuffer, Int32 len, SocketFlags socketFlags) в System.Net.Sockets.Socket.Receive (буфер Byte [], смещение Int32, Int32 размер, SocketFlags socketFlags, SocketError & errorCode) в System.Net.Sockets.NetworkStream.Read (буфер Byte [], смещение Int32, Размер Int32) в System.Net.PooledStream.Read (буфер Byte [], Int32 смещение, размер Int32) в System.Net.Connection.SyncRead (HttpWebRequest запрос, логический userRetrievedStream, логический probeRead) в System.Net.ConnectStream.ProcessWriteCallDone (ConnectionReturnResult returnResult) в System.Net.ConnectStream.CallDone (ConnectionReturnResult returnResult) в System.Net.ConnectStream.ResubmitWrite (ConnectStream oldStream, Boolean suppressWrite) в System.Net.HttpWebRequest.EndWriteHeaders_Part2 () в System.Net.HttpWebRequest.EndWriteHeaders (логический асинхронный) в System.Net.HttpWebRequest.WriteHeadersCallback (WebExceptionStatus errorStatus, поток ConnectStream, логическая асинхронность) в System.Net.ConnectStream.WriteHeaders (логический асинхронный) в System.Net.HttpWebRequest.EndSubmitRequest () в System.Net.HttpWebRequest.GetResponse () в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan тайм-аут) в System.ServiceModel.Channels.RequestChannel.Request (Сообщение сообщения, TimeSpan timeout) в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (Message сообщение, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannel.Call (Строковое действие, Boolean oneway, операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan timeout) в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage methodCall, операция ProxyOperationRuntime) в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (Шеззаде сообщение) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) в StationService.IStationService.GetCurrentStationTrack (String StationId) в StationService.StationServiceClient.GetCurrentStationTrack (String stationId) в GetSongJS.getMarq (String radioIdentifier) ​​

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

Ответы [ 2 ]

6 голосов
/ 28 сентября 2010

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

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

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

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

...