【问题标题】:asp.net variable setted even if EnableSessionState="ReadOnly"即使 EnableSessionState="ReadOnly" 也会设置 asp.net 变量
【发布时间】:2012-07-04 04:57:39
【问题描述】:

我有一个设置了指令 EnableSessionState="ReadOnly" 的页面。

当我有:

this.Session.Add("MyVar","TempVar");

下一个请求返回NULL

当我有:

this.Session["MyVar"] = "TempVar";

下一个请求返回“TempVar”

我可以禁用此行为吗?

【问题讨论】:

  • 你想要它只用于这个页面还是整个 webapp?
  • 只有这一页。我无法理解为什么使用“添加”将项目添加到集合中只是暂时的,而将项目设置为“全局”
  • "我有一个页面设置了指令 EnableSessionState="ReadOnly"。"所以我必须有这一行:'' 我的问题是当我做 'Session["A"] = "B";'我不希望在下一个请求中出现 'Session["a"] == "B"'。我希望在下一个请求中使用 'Session["a"] == null'。当我写 'Session.Add("a")' 时,它的行为是我所期望的
  • 在 ASP.NET 论坛中,它提到它只是一个内存写入并且值不会添加到状态包中,这意味着您将在第二页中获得原始值

标签: c# asp.net session session-state


【解决方案1】:

之所以这样做是因为 Session[""] 正在使用 get;set; 访问数组。显然未设置为检查 enablesessionstate 的访问器。所以基本上它被放入了那个数组,但它没有被保存。与 .Add() 函数相反,它显然有检查。它可能是为了减少 get;set; 的开销。属性。

正如其他人所说,您可能会在同一个请求中看到它,但它没有保存到会话中。

【讨论】:

  • 我的结论完全正确。我无法确认 Trow 反射器
猜你喜欢
  • 2021-10-29
  • 2011-05-29
  • 2018-08-17
  • 2021-04-26
  • 2013-11-18
  • 2016-05-07
  • 2016-05-28
  • 2016-10-23
  • 1970-01-01
相关资源
最近更新 更多