WCF闲置报错问题,高手请近(急)
用的是WCF做了个服务让一个网站通过这个服务去访问数据等操作,一但闲置久了WCF就报以下的错误,这个怎么解决?
从另一方收到未进行安全处理或安全处理不正确的错误。有关错误代码和详细信息,请参见内部 FaultException.
System.ServiceModel.CommunicationObjectFaultedException: 通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。
Server stack trace:
在 System.ServiceModel.Channels.CommunicationObject.ThrowIfDisposedOrNotOpen()
在 System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
在 System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
在 Ris.IWCFDAL.IWCFDictionaryDAL.GetDictionaryList()
我在WCF(服务端)的项目里放了个TIMER,让他定时检查服务的状态,如果一出错就重启,但是服务一直是好的,只是WEB项目(客户端)闲置久了便会出上面这个错误,有人说
一个连接对象使用完就关闭,需要使用时再重新实例化。闲置久了是会报错,但我不知道在WEB端怎么关闭这个连接,我这边好像没有打开什么连接,只是调用WCF里的一些方法,连接要怎么关闭,请告诉我代码怎么写,刚接触WCF不太懂。
还有的说修改配置文件也可以,我不知道我的配置哪有问题,我把openTimeout,receiveTimeout,sendTimeout,inactivityTimeout都设成了10小时,但感觉只要闲置几分钟便会不出,很急,望高手指点,谢谢,真的很急。我把我的配置贴出来你们帮我看看
服务端配置(WCF项目):
wsHttpBinding>
<binding name="WSHttpBinding_IDisService" closeTimeout="10:01:00" openTimeout="10:10:00" receiveTimeout="10:10:00" sendTimeout="10:10:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" establishSecurityContext="true" />
</security>
</binding>