Как я могу заставить 404 работать с Elmah и HandleErrorAttribute, написанным для Elmah в asp.net mvc? - PullRequest
4 голосов
/ 26 октября 2010

Я реализовал Elmah в одном из моих проектов ASP.NET MVC.Кроме того, я сделал следующее:

  • Я реализовал атрибут ElmahHandleErrorAttribute, написанный Атифом Азизом в этом сообщении
  • Я добавил атрибут ко всем моим контроллерам
  • Я настроил Elmah для фильтрации 404 ошибок, поскольку я не хочу регистрировать эти
  • Я добавил представление Error.aspx в общую папку, которую я хочу использовать для всех моих ошибок.
  • Мои customErrors в Web.Config включены, и я не указал в нем ни одной страницы ошибок, как это не должно быть.

В одном из моих контроллеров у меня естьследующий код:

if (model == null)
            throw new HttpException((int)HttpStatusCode.NotFound, "Project not found");

Я просто хочу отобразить 404, если запись не может быть найдена в базе данных.По какой-то причине моя страница Error.aspx не будет отображаться для ошибки 404.Вместо этого отображается общая страница asp.net «ресурс не найден».Я попытался удалить настройку фильтра 404 в Elmah, но это ничего не меняет.

Интересная часть, если я изменю ошибку с NotFound, чтобы сказать InternalServerError, страница Error.aspx отображается очень хорошо.

У кого-нибудь есть указания относительно того, почему это так?

1 Ответ

0 голосов
/ 27 октября 2010

Я не использовал Elmah, кроме создания примера приложения, но, возможно, потому что 404 не является ошибкой приложения? Если мое понимание верно, ошибка 404 возвращается в IIS, который в свою очередь отображает сообщение об ошибке, которое вы видите. Также я считаю, что web.coin

Если я правильно понимаю, вы можете изменить свой подход и построить, используя это вместо или установите Response.StatusCode на 404 (Проверьте ответ Джеффа в связанном вопросе)

...