ASp.net状态服务器处理IRequiresSessionState与IReadOnlySessionState?

时间:2012-03-09 16:34:45

标签: c# asp.net .net-4.0 session-state-server

我的朋友在这里问question

那个回答他的人 - 写了一些有趣的东西! (没有任何证据,来源)。

  

当您使用进程外会话时,它会产生更大的不同   国家储存。在这种情况下,如果没有接口,系统将会   仍然将会话数据存储在远程数据库中,即使它存在   没有改变(系统不跟踪是否会话   在请求期间修改了数据)。当你使用   IReadOnlySessionState接口,跳过写回阶段。

在哪里说IRequiresSessionState会回写会话(即使hadent已经改变了。)?

任何解释都将很乐意除外。

1 个答案:

答案 0 :(得分:2)

无法找到相应的正式文档,但启动dotPeek(或其他一些反汇编程序)并连续浏览System.Web后会发现:

  • HttpContext.Handlerset时,如果处理程序实现IRequiresSessionStateHttpContext._requiresSessionStateFromHandler设置为true;
  • 后一位私人会员通知get; HttpContext.RequiresSessionState;
  • SessionStateModule(我猜它总是在模块管道中),在其EndRequest处理程序中,检查HttpContext.RequiresSessionState,如果是true,则与会话状态提供程序以保存状态。