HttpHandler和会话状态的问题

时间:2010-09-03 15:21:58

标签: asp.net session httphandler

我正在尝试设计一个解决方案,它将模拟App_Offline.htm进行远程访问,但仍允许本地用户测试网站。我找到了一些我正在尝试的各种选项,但最好的选项似乎不适用于我们的ASP.NET(2.0)站点,它依赖于在所有页面上启用会话状态。

将HttpHandler添加到web.config

<add verb="*" path="*.aspx" type="AppOffline.AppOfflineHandler, AppOffline" />

当班级被调用时,归结为:

public void ProcessRequest( HttpContext context )
{
    this.context = context;

    // offline mode and remote request?
    if ( !context.Request.IsLocal &&
        IsOffline
        )
    {
        context.Response.Clear();
        context.Response.Write( AppOffline );

        context.Response.End();
    }
    else
        // redirect to the default processing pipe
        PageParser.GetCompiledPageInstance(
            context.Request.Path,
            context.Request.PhysicalPath,
            context ).ProcessRequest( context );
}

问题出在PageParser.GetCompiledPageInstance中。我现在在我们网站上点击的任何页面都会收到以下错误消息:

  

“会话状态只能在以下情况下使用   enableSessionState设置为true,   在配置文件中或在   Page指令。请也做   确定   System.Web.SessionStateModule或   自定义会话状态模块是   包括在内   &LT;结构&gt; \&LT;的System.Web&GT; \&LT;的HttpModules&GT;   申请中的部分   配置。“

我们将所有会话变量存储在SQL中,不确定是否存在这些因素。

我见过其他有类似错误的人,他们得到的答案是你需要添加ProcessRequest(上下文)来解决它。

想法,意见,建议?

感谢。

1 个答案:

答案 0 :(得分:9)

您是否在处理程序中实现了IRequiresSessionState