asp.net – 在Inproc模式下与页面只读的会话锁争用
我最近发现,当您将页面设置为只读会话并且您正在使用inproc(内存)会话存储时,该会话仍然可以在该页面上写入,并且不是真正的只读.进程外会话存储确实尊重只读设置.
当页面设置为只读并使用inproc模式时,您是否仍然可以获得没有会话锁争用的好处?在readonly和inproc中,具有相同会话ID的多个同时请求是否必须等待会话锁释放? 解决方法
BuzzAnn,
微软对主题文件表明,设置你的页面级会话状态模式为“只读”应该保护您免受并发尝试写会话状态信息(他们会排队并连续处理),但多个读者将被允许.请参阅“同步对会话状态的访问”部分: http://msdn.microsoft.com/en-us/library/aa479041.aspx 当页面的EnableSessionState属性设置为“ReadOnly”时,每个页面请求都会尝试使读取器锁定状态信息.在标准的ReaderWriterLock语义中,任意数量的读者都可以同时访问受保护的信息.但是,任何实现写入器锁定的请求(例如,通过将EnableSessionState设置为“true”)将阻止对会话状态信息的写入和读取,直到保持写入器锁定的请求完成为止. 只要您尝试做的就是在将EnableSessionState设置为“ReadOnly”时从您的页面读取会话状态信息,所有读取请求将继续进行而不会阻塞.但是,如果您尝试编写,则文档不清楚实际会发生什么.假设ReaderWriterLock是用于同步访问的全部内容,我的猜测是您不会受到覆盖,竞争条件和其他非同步访问问题的保护. 如果您要尝试写入会话状态,请确保将EnableSessionState设置为“true”以确保实现写入程序锁定并根据需要进行同步. 我希望这有帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – AsyncFileUpload控件
- Asp.net MVC同名视图,路径不同
- asp.net – 为什么我的验证在MVC3中的帖子之前触发了get请求
- entity-framework – 在MVC 5项目上使用ASP.NET Identity但
- asp.net-mvc – 使用GUID的部分作为ID
- asp.net-mvc – 如何在MVC3 Razor中禁用DropDownListFor?
- asp.net – 单独配置文件为web.config的部分
- asp.net – Firefox在IIS6上启用了摘要式身份验证的每个HTT
- asp.net-mvc-4 – ASP.NET MVC 4会员“记住我”如何运作?
- asp.net – HTML文档到PDF?