2010-09-03 88 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