【问题标题】:Session values are lost between calls会话值在调用之间丢失
【发布时间】: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


【解决方案1】:

哇哦!!我找到了原因! ASPX 的 <%@ Page 标记中有 EnableSessionState="ReadOnly" 指令。请注意,a) 因为这个Session 也不能在母版页上工作,b) 没有例外!!

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2012-11-28
    • 2019-04-04
    • 1970-01-01
    • 2014-04-18
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    相关资源
    最近更新 更多