Server.Transfer в Global.asax - PullRequest
       26

Server.Transfer в Global.asax

9 голосов
/ 29 декабря 2010

У меня есть собственный обработчик ошибок в методе global_asax Application_Error, при возникновении ошибки я использую следующий код для переноса пользователя на страницу ошибки:

Server.Transfer("/Error/");

Однако без указания фактического имени страницы приведенный выше код прерывается с « Ошибка при выполнении дочернего запроса для исключения / Error / ».

Так что, если я использую Server.Transfer("/Error/Default.aspx"), он работает без проблем.

Также использование Response.Redirect("/Error/") также работает нормально, однако мы хотим продолжать использовать Server.Transfer для сохранения URL-адреса, отображаемого в адресной строке при отображении страницы с ошибкой, чтобы пользователи могли просто обновить страницу, чтобы повторить попытку доступа к исходному URL-адресу.

Буду признателен, если кто-нибудь сможет прокомментировать, как заставить метод Server.Transfer работать без указания фактического имени страницы aspx.

Большое спасибо.

1 Ответ

14 голосов
/ 29 декабря 2010

Server.Transfer нужен фактический виртуальный путь к ресурсу, который даст необходимый результат. Он не проходит через IIS, чтобы выяснить, какие документы используются на веб-сайте по умолчанию, поэтому он не имеет ни малейшего представления о том, что вы подразумеваете под «/ Ошибка /», если только это не является действительным именем файла.

Response.Redirect работает, потому что это отправляет «перемещенный» результат в браузер с этим относительным URL (/ Error /), и когда браузер делает новый запрос для / Error /, IIS обрабатывает его первым и применяет значение по умолчанию настройки документа.

...