ELMAH внутри ошибки тематической страницы

I have a themed page whereby the theme is chosen inside a http module.

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

Мартин

Нидерланды


person Martijn B    schedule 11.02.2010    source источник
comment
Есть ли на странице или главной странице runat="server" в разделе head?   -  person Russ Bradberry    schedule 11.02.2010


Ответы (1)


Ответ на решение вашей проблемы был дан ранее:
Исключить определенные страницы из использования HTTP-модуль.

Вы можете использовать HTTPHandler вместо HTTPModule. Обработчики позволяют указать путь при объявлении их в Web.Config.

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

Если вы должны использовать HTTPModule, вы можете просто проверить путь запроса и, если он должен быть исключен, обойти проверку.

person rick schott    schedule 27.02.2011