2010-09-28 50 views
1

在我的程序中有一個包含wcf客戶端的aspx頁面,所以它調用位於同一服務器上的wcf服務。WCF服務調用中的「線程被中止」

當我的wcf客戶端調用生產服務器上的IIS託管的wcf服務時,我``得到了這個異常。

Ex。 MSG:Thread was being aborted.

例堆棧:

在System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr的socketHandle, 字節* pinnedBuffer,LEN的Int32,的SocketFlags的SocketFlags)在 System.Net.Sockets.Socket在System.Net System.Net.Sockets.NetworkStream.Read(Byte []緩衝區,Int32偏移量, Int32大小).Receive(Byte []緩衝區,Int32偏移量,Int32 大小,SocketFlags socketFlags,SocketError & errorCode) .PooledStream.Read(Byte []緩衝區,Int32 偏移量,Int32大小)在System.Net.Connection.S yncRead(HttpWebRequest的 請求,布爾userRetrievedStream,布爾probeRead)在 System.Net.ConnectStream.ProcessWriteCallDone(ConnectionReturnResult returnResult)在 System.Net.ConnectStream.CallDone(ConnectionReturnResult returnResult) 在System.Net.ConnectStream.ResubmitWrite(ConnectStream oldStream, 布爾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.RequestChannel System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(時間跨度 超時)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串動作, 布爾單向,ProxyOperationRuntime操作.Request(消息消息,時間跨度 超時)在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息,時間跨度超時) ,Object [] ins, Object []輸出,TimeSpan超時)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage 包括MethodCall,ProxyOperationRuntime操作)處 StationService.IStationService System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即時聊天 消息)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData & MSGDATA,的Int32類型)。 GetCurrentStationTrack(字符串 的stationID)在 StationService.StationServiceClient.GetCurrentStationTrack(字符串 的stationID)在GetSongJS.getMarq(字符串radioIdentifier)

我使用PRTG Ipmonitor,它給我 「請求當前」 SENS過多的請求要麼。 我的網站在瀏覽器中變得可用。 如果刪除這個調用服務的頁面將會是確定的。

回答

2

客戶端代理髮出呼叫後是否有Response.Redirect(url)呼叫?單一參數重載將終止當前線程,這會導致日誌中出現許多這些類型的錯誤。有時候頁面已經完成工作,並且不會發生,但切換到另一個更繁忙的環境常常是觸發器。

+0

沒有沒有在該頁面中的任何的Response.Redirect(URL)中止異常。只有Page_Load會調用創建客戶端代理的方法,然後調用它的方法並從他那裏獲取結果。 – igor 2010-09-28 12:52:37

6

聽起來好像你沒有關閉WCF客戶端。

我認爲正在發生的是:

  • 用戶調用aspx頁面
  • aspx頁面調用服務
  • aspx頁面返回到
  • 服務客戶端沒有關閉用戶,因此請求已打開且當前請求的數量很高
  • 最終,您的最大請求數已打開
  • the pag一個免費的連接,當它沒有得到一個aspx頁面timesout
  • 那麼你得到一個線程等待ê從超時