2010-09-03 86 views
2

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

的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或$ 自定义会话状态模块包含在 <配置> \ <的System.Web > \ <的HttpModules>应用程序 配置 节“。

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

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

想法,意见,建议?

谢谢。

回答

9

您是否在您的处理程序中实施IRequiresSessionState

+0

是的 - 这应该解决它。 – 2010-09-03 16:43:35

+0

*打头* 公共类AppOfflineHandler:IHttpHandler,IRequiresSessionState 现在工作就像一个魅力,谢谢! – 2010-09-03 20:07:47

+0

不错的一个,工作就像一个魅力:-) – 2012-10-22 15:56:26