【发布时间】:2012-06-25 05:28:18
【问题描述】:
我正在编写一个 jQuery Mobile 应用程序,该应用程序向我服务器上的几个不同的 IHttpHandler 类发出多个 AJAX 请求。处理程序都返回 JSON 或 JSONP,并在 JSON 中包含context.Session.SessionID,用于调试目的。我向第一个处理程序发出一个请求,并取回会话 ID“2jysbehwyxlne0knatltcb2z”。我向另一个处理程序发出另一个请求,并取回会话 ID“qy3v251fxrxesbgqeobqvaza”。这是在几秒钟之内。到底是怎么回事?我希望会话 ID 保持不变,直到会话在延长时间后过期。
当我在他们自己的选项卡中打开请求时,而不是在同一个选项卡中通过 AJAX,我会返回相同的会话 ID。因此,对于我的身份验证请求和其他检索数据的请求,当这些请求作为页面中的 AJAX 请求发生时,会话 ID 是不同的。当我浏览 Chrome 控制台中的“网络”选项卡并右键单击“在新选项卡中打开链接”时,每个请求都按预期运行,具有相同的会话 ID。
我正在http://localhost 上运行 jQuery Mobile 应用程序,并向https://localhost 上的处理程序发出请求,如果这很重要的话。我所有的处理程序都实现了IRequiresSessionState。 This question 看起来和我的一样,它唯一的答案是实现 IRequiresSessionState,我已经在这样做了。
编辑: this question 可能是相关的,但我在 Chrome 中观察到这种行为。
编辑: 我正在使用 jQuery 的 getJSON 函数来发出 AJAX 请求。 This question 关于 getJSON 和 cookie 可能是相关的。
【问题讨论】:
-
您是否检查过您的 cookie 是否被正确传递?检查值是否在您的 asp.net 会话 cookie 中设置
-
看起来只有当我在浏览器选项卡中向处理程序发出常规 HTTP 请求时才会设置 cookie。我在我的 JSON 中以这种方式返回的 cookie 中看到了会话 ID。然后,当我尝试加载通过 AJAX 发出请求的页面时,cookie 中的会话 ID 保持不变,并且通过 AJAX 请求返回的会话 ID 与 cookie 中的不同。
-
你能分享你的ajax调用代码吗?还有您当前的域。那里一定有问题。
-
嗯,我正在使用 jQuery 的
getJSON函数。我将使用相关链接更新我的问题。
标签: .net ajax session jsonp ihttphandler