IRequiresSessionState
和IReadOnlySessionState
之间的区别是秒表无法保存对 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指令之间的相似之处: