我的朋友在这里问question
那个回答他的人 - 写了一些有趣的东西! (没有任何证据,来源)。
当您使用进程外会话时,它会产生更大的不同 国家储存。在这种情况下,如果没有接口,系统将会 仍然将会话数据存储在远程数据库中,即使它存在 没有改变(系统不跟踪是否会话 在请求期间修改了数据)。当你使用 IReadOnlySessionState接口,跳过写回阶段。
在哪里说IRequiresSessionState会回写会话(即使hadent已经改变了。)?
任何解释都将很乐意除外。
答案 0 :(得分:2)
无法找到相应的正式文档,但启动dotPeek(或其他一些反汇编程序)并连续浏览System.Web
后会发现:
HttpContext.Handler
为set
时,如果处理程序实现IRequiresSessionState
,HttpContext._requiresSessionStateFromHandler
设置为true
; get
; HttpContext.RequiresSessionState
; SessionStateModule
(我猜它总是在模块管道中),在其EndRequest
处理程序中,检查HttpContext.RequiresSessionState
,如果是true
,则与会话状态提供程序以保存状态。