2010-09-28 21 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
  • 那么你得到一个线程等待ê从超时