会话超时差异

时间:2014-01-09 13:22:32

标签: c# asp.net wcf session timeout

我正在为一个相当大的项目做一些支持。我的任务是将会话超时更改为比现在更长的时间。现在他们在大约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之间的区别是什么?

2 个答案:

答案 0 :(得分:1)

借助this question

中的@marc_s借用回复
  

最重要的是 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

的帖子