日期:2014-05-18  浏览次数:20765 次

(WCF)异常详细信息: System.Net.WebException: 操作超时
有一个winform类型的Host,分别有3个按扭功能:1、开启服务。2、关闭服务。3、显示当前服务状态。
还有一个web类型的client,我添加了服务引用,并在Page_Load中写好了调用代码。
然后,我打开client页面,显示结果正确,调用成功。
然后我再刷新,调用成功。
再刷新,还成功。
……
但是我刷新大约8次后,页面停顿了好久,最后显示如下错误:
“异常详细信息: System.Net.WebException: 操作超时”。

我重新关闭浏览器,重新输入client调用页面网址后,发现仍是超时。
这时,我点击了Host窗口中的第3个按扭“查看服务状态”,弹出结果是:Opened。
服务正常,并没有关闭呀?

我又尝试点击“关闭服务”按扭,再点击“开启服务”按扭。这时再刷新client页面,发现又调用正常了。
但是我再刷新大约8次左右,又超时了。
这是怎么回事儿???

请高手指点。超时的详细信息如下:

-------------------------

异常详细信息: System.Net.WebException: 操作超时

源错误:

行 51:  
行 52: public int GetMaxCustID() {
行 53: return base.Channel.GetMaxCustID();
行 54: }
行 55:  


源文件: D:\Web\WCF-Example\Client\Service References\ServiceReference\Reference.cs 行: 53

堆栈跟踪:

[WebException: 操作超时]
  System.Net.HttpWebRequest.GetResponse() +1532114
  System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +40

[TimeoutException: 对“http://localhost:8731/Design_Time_Addresses/Service/CustService/”的 HTTP 请求已超过为 00:01:00 分配的超时。为此操作分配的时间可能是较长超时的一部分。]
  System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason) +501
  System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +208
  System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) +341

[TimeoutException: 请求通道在等待 00:00:59.9990000 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。]
  System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +2668969
  System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +717
  Client.ServiceReference.ICustService.GetMaxCustID() +0
  Client.ServiceReference.CustServiceClient.GetMaxCustID() in D:\Web\WCF-Example\Client\Service References\ServiceReference\Reference.cs:53
  Client._Default.Page_Load(Object sender, EventArgs e) in D:\Web\WCF-Example\Client\Default.aspx.cs:21
  System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
  System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
  System.Web.UI.Control.OnLoad(EventArgs e) +99
  System.Web.UI.Control.LoadRecursive() +47
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436



------解决方案--------------------
你client打开后有没有close掉?
wcf默认连接是10个,如果你每次刷新页面访问了后没有close掉链接,那么等到大约10次左右的时候,连接没有了,就会超时了,把你调用的代码贴出来看看