2010-02-11 22 views
5

我有一個主題頁面,在http模塊中選擇主題。 ELMAH在一個主題頁錯誤

public void context_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    Page p = HttpContext.Current.Handler as Page; 

    if (p != null) 
    { 
     //get theme 
     string theme = GetTheme(HttpContext.Current.Request.Url.Host); 

     Debug.WriteLine(String.Format("Loading theme {0}", theme)); 

     //set theme of page 
     p.Theme = theme; 
    } 
} 

現在,當我請求如下異常被拋出的elmah.axd:

使用主題css文件要求頁頭控制。 (例如)。

當我禁用http主題模塊時,一切正常,並顯示elmah.axd頁面。我認爲這是ErrorLogPage中的一個小錯誤。 ErrorLogPage應該處理這樣一個事實,即一個主題可以提供給頁面,或者應該忽略給定的主題。

現在我用的解決方法:

private const string ELMAH_ERROR_PAGE = "Elmah.ErrorLogPage";

 if (p.GetType().FullName != ELMAH_ERROR_PAGE) 
     { 
      p.Theme = theme; 
     } 

你有什麼更好的意見或想法?

的Gr

的Martijn

荷蘭

+0

頁面或母版頁在'head'部分有'runat ='server''嗎? – 2010-02-11 20:59:56

回答

0

一種解決您的問題已經回答過:
Exclude certain pages from using a HTTPModule

你可以使用一個HttpHandler一個HttpModule,而不是 。處理程序讓你 指定一個路徑,當你在Web.Config中聲明它們時 。

<add verb="*" path="/validate/*.aspx" type="Handler,Assembly"/> 

如果你必須使用一個HttpModule,你 可能只是檢查 請求的路徑,如果它是一個要 排除,繞過驗證。