我进行了以下简单的测试:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["dt"] == null)
Session["dt"] = DateTime.Now;
Session["dt"] = ((DateTime)Session["dt"]).AddYears(1);
Response.Write(Session["dt"].ToString());
}
Run Code Online (Sandbox Code Playgroud)
并发回发的结果如下:
1- 13/11/2015 10:00:00 2- 13/11/2016 10:00:00 3- 13/11/2017 10:00:00 4- 13/11/2018 10:00:00 5- 13/11/2019 10:00:00 6- 13/11/2020 10:00:00 ...
这清楚地表明会话变量正在更新.在MSDN上,您可以找到以下内容:http: //msdn.microsoft.com/en-us/library/ms178581(v = vs.100).aspx
您可以通过将会话状态模式设置为Off来禁用应用程序的会话状态.如果要仅为应用程序的特定页面禁用会话状态,可以将@Page指令中的EnableSessionState值设置为false.EnableSessionState值也可以设置为ReadOnly,以提供对会话变量的只读访问.
我们几乎在应用程序的每个页面上执行读/写操作.但是,这会阻止同时为同一客户端运行两个http请求.第一个请求应该完成,直到服务器处理第二个请求.经过一些研究,显然是由于会话的独占锁定.为了好奇,我们尝试将会话状态设置为ReadOnly,似乎仍然可以编辑,没有定义独占锁.
问题:
1- Readonly是否意味着Readonly(因此这里有一个asp中的错误)或者其他的东西?
2-只要会话似乎可以使用ReadOnly状态编辑,有什么可担心的,你认为在生产环境中继续使用它是否安全?
谢谢