【问题标题】:Asp.Net Session expires immediatelyAsp.Net Session 立即过期
【发布时间】:2011-11-16 10:34:02
【问题描述】:

即使我在 web.config 文件中进行了设置,我的 Asp.net 会话也会立即过期,

<system.web>
        <sessionState timeout="2880" mode="InProc" cookieless="UseCookies"></sessionState>
        <customErrors mode="RemoteOnly"/>
        <trace enabled="false" localOnly="false"/>
        <compilation debug="false" strict="false" explicit="true" targetFramework="4.0"/>
        <httpCookies httpOnlyCookies="true"/>
        <pages validateRequest="false" enableEventValidation="false" viewStateEncryptionMode ="Never" enableViewStateMac="false" />
    </system.web>

我在 web.config 中进行了上述设置,即使它在大约 3 分钟后过期...... 谁能帮帮我??

【问题讨论】:

  • 你是如何在 web.config 中进行设置的?你能告诉我们一些你做了什么的代码吗?
  • 服务器上的日期和时间是什么?
  • 我已将上面使用的代码粘贴到 标签中。如果您有答案,请回复..
  • 服务器上的 UTC 日期和时间..
  • 日期和时间是否正确

标签: asp.net .net vb.net web-config


【解决方案1】:

如果您的应用程序支持 AJAX,请删除 cookieless 属性。使用cookieless 属性的默认值。

来自 MSDN 文档:

cookieless 属性可以是以下可能值之一。 默认值为 UseCookies 值。

注意:当您配置一个 启用 AJAX 的 ASP.NET 网站,仅使用默认值 UseCookies 用于 cookieless 属性。使用 cookie 的设置 ASP.NET AJAX 客户端脚本不支持在 URL 中编码 图书馆。

【讨论】:

  • 是的,我在 标签中使用了 cookieless="UseCookies" .. 那么这里的问题是什么?
【解决方案2】:

我相信会话不会立即过期,而是会死掉。由于您使用的是InProc 会话状态,因此它可能会在

  • 对 web.config 文件的任何更改都会导致 AppDomain 卸载和会话
  • 应用程序池重新启动。 InProc 会话非常危险,我建议至少为每个网站分配单独的应用程序池
  • 代码隐藏文件中的任何代码更改都会导致 AppDomain 卸载(以及会话),以便在新 AppDomain 中加载新程序集

最佳解决方案 - 使用SqlServer Mode 会话状态。

【讨论】:

  • 我不能使用sqlserver来存储会话状态我没有访问在线sql server的管理员权限,我需要通过其他方式来做..
  • @Puneesh - 它是托管公司吗?您可以要求为您设置此功能。最后询问您的网站是否有自己的应用程序池
  • SQL Server 不一定是“最佳”解决方案。这是最强大的解决方案。不过,我至少会选择 State Server 模式,并且不需要 SQL Server 来托管它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 1970-01-01
  • 2013-01-17
  • 2017-09-17
  • 2018-03-29
  • 1970-01-01
相关资源
最近更新 更多