показывает проблему с пользовательской страницей ошибки

Q:

Я использую ELMAH — Модули регистрации ошибок и обработчики.

но я хочу показать пользователю красивую страницу с ошибкой.

Мой вопрос состоит из двух частей:

  1. Есть ли какой-либо предпочтительный дизайн или информация, необходимая на этой странице (требования). Любые предложения, ссылки будут отличными.

  2. Когда я комментирую строку Clear error, пользователю показывается страница с ошибкой, в противном случае страница с ошибкой не появляется. Почему мы очищаем ошибки? И как отобразить страницу с ошибкой.


 protected void Application_Error(object sender, EventArgs e)
        {
            HttpContext ctx = HttpContext.Current;
            Exception exception = ctx.Server.GetLastError();
            string errorInfo =
               "<br>Offending URL: " + ctx.Request.Url.ToString() +
               "<br>Source: " + exception.Source +
               "<br>Message: " + exception.Message +
               "<br>Stack trace: " + exception.StackTrace;

            ErrHandler.WriteError(errorInfo);

            ctx.Server.ClearError();

        }

   <customErrors mode="On" defaultRedirect="Error.aspx"/>

person Anyname Donotcare    schedule 27.07.2011    source источник
comment
Это класс, используемый для записи ошибок в папку ошибок.   -  person Anyname Donotcare    schedule 27.07.2011


Ответы (1)


Я попробую ответить. Для страницы с ошибкой я не использую страницу .aspx, потому что эта страница проходит через модули ASP .Net, и в одном модуле тоже могут быть ошибки. Поэтому я рекомендую статическую страницу (.html), обслуживаемую только IIS. Конечно, я бы тоже хотел, чтобы страницы с ошибками использовали ту же тему веб-сайта, которую легко сделать с помощью мастер-страниц, а также, возможно, другую информацию из текущего сеанса, например, вошедший в систему пользователь и т. д. Все это включает взаимодействие с ASP .Net, поэтому есть риск получить ошибки и быть перенаправленным на страницу ошибок, сгенерированную фреймворком по умолчанию. Таким образом, для пользователя вполне достаточно очень легкой страницы с ошибкой (те же цвета, стили шрифта и т. д.), возможно, с некоторой графикой и четким сообщением о том, что произошло.

Для Elmah я тоже использую некоторые приемы: во-первых, я использую не "обычное" имя для обработчика, а что-то другое, например "access-to-elmah-error.ashx". Думаю, все знают, что elmah.ashx или error.ashx используются для отображения ошибок на стороне сервера и того, что является хорошим источником для хакера. Далее я защищаю его в разделе авторизации. Если что-то очень не так с веб-сайтом и я не могу войти в систему, я могу изменить web.config, чтобы снять с него защиту, и посмотреть, что произошло.

person Adrian Iftode    schedule 27.07.2011
comment
когда вы определяете обработчик в разделе обработчиков web.config, вы просто используете другой путь вместо elmah.axd - person Adrian Iftode; 30.07.2011