【问题标题】:ASP.NET web app sessions issueASP.NET Web 应用程序会话问题
【发布时间】:2013-05-31 09:50:52
【问题描述】:

我开发了一个安装在“实时”IIS 7.5 上的 ASP.NET Web 应用程序。 Web 应用程序使用 http 会话在登录用户的页面之间传递参数。这在我的开发机器上效果很好(在 VS2010 IDE 中使用本地 IIS 进行了测试),但是当这个 Web 应用程序被上传到客户端的 IIS 并开始使用它(Google Chrome 和 IE 浏览器)时,会话变量似乎在某些随机时刻消失。我的第一个猜测是通过 web.config 文件添加以下行来增加会话超时设置:

<configuration>
 <system.web>
  <sessionState timeout="20"></sessionState>
 </system.web>
</configuration>

但这似乎并不能解决问题。所以这让我想知道,关于会话还有哪些其他设置?类似于一个内部文件夹,它保留了在实际 IIS 上溢出的所有会话的缓存?有什么想法吗?

编辑:根据@wy__ 的建议,我修改了 web.config 文件并开始在我的开发机器上看到同样的问题。这是我现在拥有的整个 system.web 部分:

  <system.web>
    <compilation targetFramework="4.0" debug="false"/>
    <pages validateRequest="false"/>
    <httpRuntime requestValidationMode="2.0" executionTimeout="110" maxRequestLength="262144"/>
    <sessionState timeout="20" cookieless="true" regenerateExpiredSessionId="true"></sessionState>
  </system.web>

我也检查了,只有一个 w3wp.exe 进程在运行。

【问题讨论】:

  • 确保浏览器没有阻止客户端机器上的 cookie。由于它是随机发生的,这不太可能,但它应该在清单上。
  • 您能告诉我们更多有关 IIS 配置的信息吗?它是单个 IIS 服务器,是网络花园还是网络场?您使用的是 InProc、State 还是 SQLServer 会话状态提供程序?
  • @RacerNerd:我不能确定,因为它发生在客户的机器上。但他们报告了 Chrome 和 IE 的相同问题。
  • @HuseinRoncevic:这听起来像是一个单一的 IIS 服务器。而 SQL Server 根本不参与其中。
  • 您可能应该与他们核实以确保所涉及的工作进程不超过 1 个,或者他们没有在网络场中运行,因为这可能是您丢失会话的原因。

标签: c# asp.net .net session iis


【解决方案1】:

默认情况下,会话使用 cookie 来跟踪用户会话。如果您不确定用户是否将其关闭,您可以配置无 cookie 会话。

<configuration>
    <system.web>
        <sessionState cookieless="true" regenerateExpiredSessionId="true" />
    </system.web>
</configuration>

【讨论】:

  • 谢谢。我认为你正在做某事。我将您的建议添加到我的 web.config 中,实际上我开始在我的开发机器上看到同样的问题。那里可能有什么问题? (我还用细节更新了我原来的问题。)
猜你喜欢
  • 2020-12-03
  • 2011-12-12
  • 1970-01-01
  • 2011-12-13
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多