Вопрос

У меня есть тематическая страница, на которой тема выбирается внутри http-модуля.

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 theme, все в порядке, и отображается страница elmah.axd.Я думаю, что это небольшая ошибка внутри ErrorLogPage.ErrorLogPage должен справляться с тем фактом, что на странице может быть задана тема, или вообще игнорировать данную тему.

На данный момент я использую обходной путь:

private const string ELMAH_ERROR_PAGE = "Elmah.ErrorLogPage";

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

У вас есть какие-нибудь идеи или соображения получше?

Гр

Martijn

Нидерланды

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top