- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
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 :
Three of the most important methods in a session state provider are GetItem, GetItemExclusive, and SetAndReleaseItemExclusive. The first two are called by SessionStateModule to retrieve a session from the data source. If the requested page implements the IRequiresSessionState interface (by default, all pages implement IRequiresSessionState), SessionStateModule's AcquireRequestState event handler calls the session state provider's GetItemExclusive method. The word "Exclusive" in the method name means that the session should be retrieved only if it's not currently being used by another request. If, on the other hand, the requested page implements the IReadOnlySessionState interface (the most common way to achieve this is to include an EnableSessionState="ReadOnly" attribute in the page's @ Page directive), SessionStateModule calls the provider's GetItem method. No exclusivity is required here, because overlapping read accesses are permitted by SessionStateModule.
注意显式使用这些接口(interface)和使用 EnableSessionState 之间的相似之处页面指令:
关于c# - IRequiresSessionState 与 IReadOnlySessionState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8039014/
我已经为此苦苦挣扎了一段时间。 我使用以下代码实现了一个基本的 IHttpHandler,SESSION 不断更新: namespace ClassLibrary1 { public clas
我需要能够在看到 session 状态时进行更改。我发现了 IRequiresSessionState 标记接口(interface),但一直无法弄清楚如何使用它。我想我可能遗漏了一些明显的东西。你们
IRequiresSessionState 和 IReadOnlySessionState 除了无法保存对 session 变量的更改外,还有什么区别? 两者都使我能够在我的 HttpHandler
我有实现 IRequiresSessionState 的 ASHX HTTPHandler。当我调用此处理程序并在另一个窗口中调用同一应用程序的 aspx 页面时,aspx 页面在 ashx 页面完成
我的应用程序有时会在 global.asax 的 Application_OnPostAuthenticateRequest 事件中调用 Server.Transfer 来充当某种 url 重写。当发
我是一名优秀的程序员,十分优秀!