У меня есть обработка ошибок в событии Application_Error файла globals.asax. Внутри этого события я использую метод Response.Redirect(~errorview.aspx)
, для перенаправления на сайт, который способен обрабатывать ошибки в удобном для пользователя способом.Обработка исключений приложением_Error, перенаправление бесконечного цикла и проблема загрузки CSS
Все работает нормально, если только исключение не растет в событии Application_Start. Когда возникает ошибка, мое приложение попадает в бесконечный цикл с повторным применением метода Application_Error. Более того, страница, к которой я перенаправляюсь, никогда не попадает. Изменение Response.Redirect(~errorview.aspx)
метод Response.Redirect(~errorview.aspx, false)
ничего не меняет.
Хорошей новостью является то, что Response.Redirect(~errorview.aspx)
был заменен на Server.Transfer(~errorview.aspx)
, сайт errorview.aspx успешно ударил.
Побочный эффект теперь не загружается CSS, а страница errorview.aspx выглядит уродливой. Более того, CSS не загружается только, когда исключение происходит в Application_Start событие. Исключения, выброшенные из любого другого места, не делают беспорядок CSS.
Как я могу корректно справиться с этой проблемой и почему CSS отсутствует в одной конкретной ситуации? Каков подходящий способ обработки ошибок в моем случае?
UPDATE
Для CSS загрузки, я использую это:
<link href="~/Css/Layout/style.css" type="text/css" rel="stylesheet"
runat="server" ID="_uid" />
страница ошибки Я перенося из: HTTP: // локальный/APP/Страницы/Бытовки/Страницы /ErrorView.aspx
CSS путь к папке: HTTP: //localhost/APP/Pages/Module/CSS/Layout/style.css
Спасибо за любые подсказки заранее. С уважением.
Я хотел добавить немного к этому - что может вызвать путаницу на первый взгляд. Когда вы используете Server.Transfer, он не запускает новый ответ. Если вы написали что-либо в ответ (например, если ошибка происходит на полпути через создание вывода для страницы), вы получите свою новую страницу в этом контексте. Если вы хотите удостовериться, что ваша страница ошибки является единственной вещью, отображаемой в браузере, вам нужно вызвать Response.Clear * before *, чтобы вызвать Server.Transfer. (Один из других ответов ниже упоминает это кратко.) – TLS
Я нашел это объяснение (использование статических страниц) очень полезно .. :) – sajad