加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在Inproc模式下与页面只读的会话锁争用

发布时间:2020-12-16 07:21:16 所属栏目:asp.Net 来源:网络整理
导读:我最近发现,当您将页面设置为只读会话并且您正在使用inproc(内存)会话存储时,该会话仍然可以在该页面上写入,并且不是真正的只读.进程外会话存储确实尊重只读设置. 当页面设置为只读并使用inproc模式时,您是否仍然可以获得没有会话锁争用的好处?在readonly和
我最近发现,当您将页面设置为只读会话并且您正在使用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”以确保实现写入程序锁定并根据需要进行同步.

我希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读