【问题标题】:Session being reset inadvertently会话被无意中重置
【发布时间】:2012-12-30 04:33:01
【问题描述】:

我有一个旧的 ASP.NET 应用程序。它从 NET 2 转换为 net 4。 它使用状态服务器会话。

有时,应用会打开一个新页面(在新的浏览器选项卡中:link target = "_blank")

但在返回调用页面(选项卡)后,我发现会话已重置,因此不再使用当前用户,应用程序重定向到登录页面。实际上,SessionID 保持不变,但 IsSessionNew 设置为 true,并且 session 中没有设置任何变量。

该应用不使用 Session.Abort 或 Session.Clear。

即使我将会话更改为 InProc,并将链接的目标更改为 _top 或 _self,或完全删除,同样的事情也会发生 - 会话已重置。

这是 web.config 中的会话设置(或者我使用了 StateServer,但结果相同)

<sessionState timeout="432000" cookieless="UseCookies" mode="InProc"/> 

知道是什么原因造成的吗?

谢谢。

【问题讨论】:

  • 会话 cookie 可能使用了错误的路径。使用浏览器调试器检查流量(尤其是发送和接收的 cookie)。
  • domain也放在参数上,不带www。您的域。
  • @Lucero - 你能告诉我更多细节如何做到这一点吗?谢谢
  • @Aristos - 你能告诉我更多细节如何做到这一点吗?谢谢
  • 不,我不能 - 这取决于您使用的浏览器。

标签: asp.net .net session session-state


【解决方案1】:

我终于解决了这个问题。 但是,我没有找到真正的原因,但我找到了导致问题的模块。 这是一个 aspx 页面,做了 1001 件事情(它是基本功能加上另一个基于 ajax 调用的大约 80 件其他事情(!!!)。我没有制作那个页面!!! 但导致问题的部分是提供图像文件的功能。 所以我将该部分重写为 ASHX 处理程序,然后代码运行正常 - 会话保持打开状态。

【讨论】:

    猜你喜欢
    • 2011-08-11
    • 2012-02-05
    • 2012-09-01
    • 2014-11-02
    • 2019-08-24
    • 2011-01-24
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多