【发布时间】:2014-03-21 09:55:13
【问题描述】:
由于未知原因,我的网站在本地调试 IIS 和部署 IIS 时都没有向浏览器发送 ASP.NET_SessionId cookie,因此我的 Session 在每个页面上始终为空。在 IIS 首选项中,“会话状态”设置为“处理中”(抱歉,可能翻译不准确,我已本地化 IIS)。对这个问题有什么想法吗?
ADDITION 1:嗯,我将 sessionState 模式切换为 <sessionState cookieless="UseUri" />。浏览器中的 URL 地址现在包含 (S(fn215g55r4kws155lbfaxf55)) 标记,但 ASPX 页面的 Session 属性无论如何都是空的。所以...我的网站仍然没有任何明显的原因是无会话的。
附加 2. 我在同一个调试服务器上创建了空白网站,并且会话 cookie 在那里工作正常 - 值在调用之间保持不变。所以,我相信这个问题与我的主要网站或其 web.config 有关。
添加 3。正如@Damien_The_Unbeliever 所提到的,问题实际上与设置值有关。我不知道为什么,但会话完全忽略了Context.Session[promoCodeSessionKey] = (int?)promoCode.Id; 行。此行之后不发送任何 cookie。但是如果 session 已经在另一个地方创建并设置了 cookie,那么这一行将正常工作。
附加 4。我找到了原因。请参阅下面的答案。
【问题讨论】:
-
您不会碰巧在您的浏览器中关闭了cookies吗?您可以尝试其他浏览器来确定吗?
-
很遗憾,任何浏览器都不会收到会话 cookie。所有其他cookies都可以。我使用 Fiddler 跟踪它。
-
您是否真的在使用(或尝试)该会话?会话 Cookie 不会设置(并且会话 ID 会不断重新生成),直到它实际上必须创建会话,因为您正在使用它。
-
@Damien_The_Unbeliever,是的,我设置了会话值。
标签: asp.net session session-cookies session-state