2

私のプログラムには、同じサーバーにある wcf サービスを呼び出す wcf クライアントを含む aspx ページがあります。

私の wcf クライアントが実稼働サーバーの IIS でホストされている wcf サービスを呼び出すと、この例外が発生します。

元。メッセージ: Thread was being aborted.

スタックの例:

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 System.Net.ConnectStream.CallDone(ConnectionReturnResult returnResult) で System.Net.ConnectStream.ProcessWriteCallDone(ConnectionReturnResult returnResult) で .SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) System.Net.ConnectStream.ResubmitWrite(ConnectStream oldStream, Boolean suppressWrite) ) System.Net.HttpWebRequest で。System.Net.HttpWebRequest.EndWriteHeaders(Boolean async) の EndWriteHeaders_Part2() System.Net.HttpWebRequest.WriteHeadersCallback(WebExceptionStatus errorStatus, ConnectStream ストリーム, Boolean async) の System.Net.ConnectStream.WriteHeaders(Boolean async) の System.Net. System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan タイムアウト) で System.Net.HttpWebRequest.GetResponse() で HttpWebRequest.EndSubmitRequest() System.ServiceModel.Channels.RequestChannel.Request(メッセージ メッセージ、TimeSpan タイムアウト) でSystem.ServiceModel.Dispatcher.RequestChannelBinder.Request (メッセージ メッセージ、TimeSpan タイムアウト) で System.ServiceModel.Channels.ServiceChannel.Call (文字列アクション、ブール値一方向、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 型) で StationService.IStationService.GetCurrentStationTrack(String stationId) で StationService.StationServiceClient.GetCurrentStationTrack(String stationId) で GetSongJS.getMarq(String radioIdentifier)PrivateInvoke(MessageData& msgData, Int32 型) at StationService.IStationService.GetCurrentStationTrack(String stationId) at StationService.StationServiceClient.GetCurrentStationTrack(String stationId) at GetSongJS.getMarq(String radioIdentifier)PrivateInvoke(MessageData& msgData, Int32 型) at StationService.IStationService.GetCurrentStationTrack(String stationId) at StationService.StationServiceClient.GetCurrentStationTrack(String stationId) at GetSongJS.getMarq(String radioIdentifier)

PRTG Ipmonitor を使用していますが、"Requests Current" センサーに対する要求が多すぎます。私のサイトはブラウザで利用可能になります。サービスを呼び出すこのページを削除すれば、すべて問題ありません。

4

2 に答える 2

7

WCF クライアントを閉じていないようです。

私が考えていることは次のとおりです。

  • ユーザーが aspx ページを呼び出す
  • aspx ページがサービスを呼び出します
  • aspx ページがユーザーに返されます
  • サービス クライアントが閉じていないため、リクエストが開いており、現在のリクエスト数が多い
  • 最終的に、開いているリクエストの最大数があります
  • ページは空き接続を待ちますが、接続が得られない場合は aspx ページがタイムアウトします
  • 次に、タイムアウトからスレッド中止例外を取得します
于 2010-09-28T14:13:50.050 に答える
2

Response.Redirect(url)クライアント プロキシが呼び出しを行った後に呼び出しはありますか? 単一の引数のオーバーロードは現在のスレッドを終了させ、これらのタイプのエラーの多くがログに表示されます。ページの作業が終了し、それが起こらないこともありますが、より忙しい別の環境に切り替えることが多くの場合、トリガーになります。

于 2010-09-28T12:46:37.690 に答える