0

我有一个旧的 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"/> 

知道什么会导致这种情况吗?

谢谢你。

4

1 回答 1

0

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

于 2012-12-29T20:33:01.623 回答