Ошибка ELMAH в тематической странице
-
20-09-2019 - |
Вопрос
У меня есть тематическая страница, на которой тема выбирается внутри 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, вы могли бы просто проверить путь к запросу и, если он подлежит исключению, обойти проверку.