【问题标题】:"Thread was being aborted" in WCF Service CallWCF 服务调用中的“线程被中止”
【发布时间】:2011-04-18 06:52:15
【问题描述】:

在我的程序中有一个包含 wcf 客户端的 aspx 页面,因此调用位于同一服务器上的 wcf 服务。

当我的 wcf 客户端调用托管在生产服务器上的 IIS 中的 wcf 服务时,我会收到此异常。

例如。味精:Thread was being aborted.

前堆栈:

在 System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr socketHandle, Byte* pinnedBuffer, Int32 len, SocketFlags socketFlags) at 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 返回结果)在 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(时间跨度 超时)在 System.ServiceModel.Channels.RequestChannel.Request(消息消息, TimeSpan 超时)在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息 消息,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串动作, Boolean oneway, ProxyOperationRuntime 操作, Object[] ins, Object[] 出局,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData,Int32 类型)在 StationService.IStationService.GetCurrentStationTrack(字符串 站号)在 StationService.StationServiceClient.GetCurrentStationTrack(字符串 stationId) 在 GetSongJS.getMarq(String radioIdentifier)

我使用 PRTG Ipmonitor,它给了我太多关于“请求当前”传感器的请求。 我的网站在浏览器中可用。 如果删除这个调用服务的页面就可以了。

【问题讨论】:

    标签: c# asp.net ajax wcf prtg


    【解决方案1】:

    听起来您没有关闭 WCF 客户端。

    我认为正在发生的是:

    • 用户调用aspx页面
    • aspx页面调用服务
    • aspx页面返回给用户
    • 服务客户端未关闭,因此请求已打开且当前请求数很高
    • 最终您打开了最大请求数
    • 页面等待空闲连接,当它没有得到一个时,aspx 页面超时
    • 然后你会从超时中得到一个线程中止异常

    【讨论】:

      【解决方案2】:

      客户端代理发出调用后是否有Response.Redirect(url) 调用?单参数重载将终止当前线程,从而导致许多此类错误出现在日志中。有时页面已经完成工作但没有发生,但切换到另一个更繁忙的环境通常是一个触发器。

      【讨论】:

      • 不,该页面中没有任何 Response.Redirect(url)。只有 Page_Load 调用创建客户端代理的方法,然后调用其方法并从他那里获取结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多