2010-02-11 4 views
5

tengo una página temática por lo que el tema se elige dentro de un módulo HTTP. ELMAH dentro de una página de error temática

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; 
    } 
} 

Ahora, cuando me Solicitar al elmah.axd se lanza la siguiente excepción:

El uso de archivos CSS temáticos requiere un control de cabecera de la página. (p.ej.).

Cuando desactivo la http módulo de tema todo está bien y se muestra la página elmah.axd. Creo que este es un pequeño fallo en el interior del ErrorLogPage. El ErrorLogPage debe hacer frente al hecho de que un tema se puede dar a la página o debe ignorar el tema dado en absoluto.

Por ahora utilizar la solución:

private const string ELMAH_ERROR_PAGE = "Elmah.ErrorLogPage";

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

¿Tiene alguna idea mejor o pensamientos?

Gr

Martijn

Holanda

+0

¿La página, o la página maestra, tiene un 'runat =" servidor "' en la sección 'head'? –

Respuesta

0

una solución a su problema ha sido respondida antes:
Exclude certain pages from using a HTTPModule.

Se podría utilizar un HTTPHandler lugar de un HTTPModule. Manipuladores permiten especifica una ruta cuando se declaran en Web.Config.

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

Si tiene que usar un HTTPModule, que podría simplemente comprobar la ruta de la solicitud y si se trata de un ser excluidos , pasar por alto la validación.

Cuestiones relacionadas