IRequiresSessionStateIReadOnlySessionState之间的区别是秒表无法保存对 session 变量的更改吗?

两者都使我能够访问HttpHandler中的 session 变量。但是,为什么我更喜欢IReadOnlySessionState?它只是限制了我保存下一个请求的 session 。
还是让我在性能上优于IRequiresSessionState

我何时更愿意使用IReadOnlySessionState而不是IRequiresSessionState

最佳答案

一个关键的区别是IRequiresSessionState在当前 session 上设置了排他锁,从而潜在地限制了来自当前用户的并发请求数。 (有关此锁定现象的更多背景信息,请参见Is it possible to force request concurrency when using ASP.NET sessions?)

相反,IReadOnlySessionState不获取排他锁。

这与renad's helpful answer to an almost identical SO question中记录的内容相同。

我为此找到的最好的官方文档来自MSDN文章Session State Providers:



注意在显式使用这些接口(interface)和使用EnableSessionState Page指令之间的相似之处:

  • EnableSessionState = False 否I * SessionState接口(interface)
  • EnableSessionState =真 IRequiresSessionState接口(interface)
  • EnableSessionState = ReadOnly IReadOnlySessionState
  • 10-04 12:20