Переносится в ASP.NET 4.0 на IIS 7 и не может заставить работать пользовательские ошибки - PullRequest
0 голосов
/ 02 июня 2010

У меня есть проект веб-приложения ASP.NET, который использовался для нацеливания на ASP.NET 2.0. Я установил ASP.NET 4.0 на веб-сервере, на котором размещено веб-приложение, и изменил проект веб-приложения на целевой .NET 4.0. Все работает нормально, за исключением: Пользовательская обработка ошибок

Перед миграцией на .NET 4.0 работали нестандартные ошибки. В моем приложении есть страница Global.asax с глобальным обработчиком ошибок приложения, который отлично работает в моей среде разработки (и прекрасно работает и с .NET 2.0 на сервере), который не работает с новым IIS 7 с. Настройка NET 4.0. У меня также есть раздел customErrors в файле web.config, который, как предполагается, перенаправляет браузер на пользовательскую страницу ошибки в случае, если ошибка была такой, что даже глобальный обработчик приложения потерпит неудачу. Это также хорошо работает на моей машине, но не может ничего сделать на сервере. И я попробовал все три различных параметра для атрибута mode .

Если кто-нибудь знает, почему это может произойти, я буду признателен за любые отзывы!

1 Ответ

0 голосов
/ 28 июня 2010

Это все еще немного загадочно, но вот что я нашел. Все мои обработчики ошибок запускались, и перенаправления происходили так же, как и раньше, но когда запрос был окончательно перенесен на страницу .aspx обработчика ошибок (через Server.Transfer), он был dying . Причиной этого было то, что на странице ErrorHandler.aspx я устанавливал код ответа HTTP равным 200, пытаясь не возвращать реальный код ошибки HTTP, а вместо этого просто отображать дружеское сообщение. Как только я закомментировал код, который устанавливал код состояния HTTP на 200, все начало работать нормально и почти , как до перехода на .NET 4.0.

Я все еще не уверен, почему попытка установить код состояния HTTP на 200 вызывала странное поведение, но я рад, что нашел его, исправил проблему и смог продолжить свою жизнь ..

...