我正在为一个相当大的项目做一些支持。我的任务是将会话超时更改为比现在更长的时间。现在他们在大约10分钟后就会被注销。我发现它可能有很多不同的东西,我需要一些帮助来弄清楚它们的作用。
首先我得到了这个:
<sessionState mode="InProc" timeout="240" cookieless="UseCookies" />
这是在240分钟后触发,所以它不能是这个。 然后我明白了:
<binding name="WSHttpBinding_IFootprintService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:00:01" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:00:01" enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
</binding>
<binding name="AdministrationEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:00:01" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:00:01" enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
</binding>
<binding name="ProductionEndpoint" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:00:01" sendTimeout="00:01:00" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<reliableSession ordered="true" inactivityTimeout="00:00:01" enabled="false" />
<security mode="Message">
<transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
</security>
在那段代码中,我可以有很多不同的东西。我只是无法弄清楚closeTimeout,openTimeout,receiveTimeout,sendTimeout,inactivitytimeout和sessionstate timeout之间的区别是什么?
答案 0 :(得分:1)
最重要的是 sendTimeout ,它表示客户端有多长 将等待您的WCF服务的响应。你可以指定 小时:分钟:您设置中的秒数 - 在我的示例中,我设置了 超时至25分钟。
顾名思义, openTimeout 是你的时间量 愿意在打开与WCF服务的连接时等待。 同样, closeTimeout 是您关闭时的时间 连接(配置客户端代理),您将在等待之前等待 抛出异常。
receiveTimeout 有点像 sendTimeout 的镜像 - 而 sendTimeout 是您等待响应的时间 服务器, receiveTimeout 是您给你的时间 客户端从服务器接收和处理响应。
如果您来回发送“正常”消息,两者都可以 很短 - 特别是 receiveTimeout ,因为收到了SOAP 消息,解密,检查和反序列化应该几乎 没时间。故事与流媒体不同 - 在这种情况下,你 可能需要更多时间在客户端上实际完成“下载” 您从服务器返回的流。
希望它有所帮助,
答案 1 :(得分:1)
希望这个网站可以帮助你http://msdn.microsoft.com/en-us/library/hh924831(v=vs.110).aspx 关于超时的快速摘要:
在客户端:
SendTimeout - 用于初始化OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。从回调合同方法发送回复消息时,此超时也适用。
OpenTimeout - 在未指定显式超时值时打开通道时使用
CloseTimeout - 在未指定显式超时值时关闭通道时使用
ReceiveTimeout - 未使用客户端超时
在服务方面:
SendTimeout,OpentTimeout,CloseTimeout与客户端上的相同
ReceiveTimeout - 由服务框架层用于初始化会话空闲超时,该超时控制会话在超时之前可以空闲多长时间。
另请参阅有关WCF会话超时WCF Session Timeout
的帖子