对于Default选项来说ASPNET通过映射的HttpHandler类型是否实现了相关接口来决定具体的会话状态控制行为在SystemWebSessionState命名空间下定义了IRequiresSessionState和IRequiresSessionState接口如下面的代码片段所示这两个都是不具有任何成员的空接口(我们一般称之为标记接口)而IReadOnlySessionState继承自IRequiresSessionState如果HttpHandler实现了接口IReadOnlySessionState则意味着采用ReadOnly模式如果只实现了IRequiresSessionState则采用Required模式
public interface IRequiresSessionState
{}
public interface IReadOnlySessionState : IRequiresSessionState
{}
具体采用何种会话状态行为取决于当前HTTP上下文(通过HttpContext的静态属性Current表示)对于之前的版本我们不能对当前HTTP上下文的会话状态行为模式进行动态的修改ASPNET 为HttpContext定义了如下一个SetSessionStateBehavior方法使我们可以自由地选择会话状态行为模式相同的方法同样定义在HttpContextBase中它的子类HttpContextWrapper重写了这个方法并在内部会调用封装的HttpContext的同名方法
public sealed class HttpContext : IServiceProvider IPrincipalContainer
{
//其他成员
public void SetSessionStateBehavior(
SessionStateBehavior sessionStateBehavior)
}
public class HttpContextBase: IServiceProvider
{
//其他成员
public void SetSessionStateBehavior(
SessionStateBehavior sessionStateBehavior)
}
返回目录ASPNET MVC 框架揭秘
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程
Java程序性能优化让你的Java程序更快更稳定
Visual C++音频/视频技术开发与实战
[] []