由于未知原因,我的网站在本地调试IIS和部署IIS时都不向浏览器发送ASP.NET_SessionId cookie,因此我的Session在每个页面上始终为空。在IIS首选项'会话状态'设置为'正在处理' (抱歉,也许不是确切的翻译,我已经本地化了IIS)。关于此事的任何想法?
ADDITION 1 :好吧,我将sessionState模式切换为<sessionState cookieless="UseUri" />
。浏览器中的网址现在包含(S(fn215g55r4kws155lbfaxf55))
标记,但ASPX页面的Session
属性仍为空。所以...我的网站仍然没有任何明显的原因。
ADDITION 2。我在同一个调试服务器上创建了空白网站,会话cookie工作正常 - 调用之间保持值。所以,问题与我的主网站或它的web.config相关,我相信。
附加3 。如上所述@Damien_The_Unbeliever,问题实际上与设置值有关。我不知道为什么,但会话完全忽略了行Context.Session[promoCodeSessionKey] = (int?)promoCode.Id;
。此行之后不会发送cookie。但是如果会话已经在另一个地方创建并且设置了cookie,则该行将正常工作。
ADDITION 4 。我找到了原因。请参阅下面的答案。
答案 0 :(得分:0)
哇噢!!我找到了原因! ASPX的EnableSessionState="ReadOnly"
标记中有<%@ Page
指令。请注意,a)因为这个Session
也没有在母版页上工作,而且b)没有例外!!