我正在使用ASP.Net 无 cookie 会话,以便通过 302 重定向将其放置在 URL 中来跟踪应用程序的会话 ID,例如,如果用户要访问以下 URL
http://yourserver/folder/default.aspx
然后,它们将被重定向到类似于以下内容的 URL,然后继续提供实际页面内容
http://yourserver/folder/(S(849799d1-7ec0-41dc-962d-a77e1b958b99))/default.aspx
我遇到的问题是应用程序的入口点实际上是一个静态页面(例如,扩展名为 .html 的页面),而 ASP.Net 没有发出会话 ID 并为该页面重定向用户。 因此,这意味着指向 ASP.Net 托管内容的链接(例如链接、iframe 等)都会导致为这些链接中的每一个创建一个新的会话 ID。出于兼容性原因,我无法轻松更改页面扩展名(尽管这确实解决了问题)。
如何提示 ASP.Net 为我的页面创建会话?我尝试添加显式处理程序映射以确保页面由 ASP.Net 模块处理,但这没有影响 - 在调试时我可以看到SessionIDManager
正在为此页面创建一个实例(暗示 ASP. Net 已经通过集成管道处理此页面,而不管我的处理程序映射如何),但是 ASP.Net 仍然没有为此页面创建会话。
我正在使用 IIS 7,但这也需要在 IIS 6(带有显式处理程序映射)和 IIS 8 上工作。