Другие ошибки находят мой Error.cshtml, почему ошибка 404 не находит Error.cshtml? - PullRequest
9 голосов
/ 09 марта 2011

Я занимаюсь ASP.NET, MVC 3, веб-разработкой, впервые, одновременно.Пожалуйста, потерпите меня, поскольку я знаю, что эта тема широко обсуждалась с разных сторон.Я до сих пор не нашел ответ на свой конкретный вопрос: почему мое приложение не находит мой файл Error.cshtml, когда происходит 404, когда он находит, что он прекрасно работает с другими ошибками?

(Среда: Win 764bit, IIS7, SQL 2008 Express, VS2010, ASP.NET 4, MVC3, EF v4)

У меня есть контроллер WorkerController.cs, который правильно читает и записывает данные из базы данных.Если я изменю имя базы данных без обновления моего DbContext, это выдаст мне ошибку.Когда я изменяю web.config, чтобы всегда показывать пользовательские ошибки, мне показывается файл /Views/Shared/Error.cshtml.

I не имеет FooControllerCS файл.Если я иду в / Foo, я получаю ошибку 404, как и ожидалось.Он говорит мне, что не может найти ресурс / Foo.

Когда я устанавливаю customErrors mode = "On" и делаю http-запрос к / Foo, я получаю ошибку 404 о том, что /Error.cshtml не может быть найден.

Я ищу ичитая посты, в которых обсуждаются различные методы обработки ошибок с назначенными контроллерами, но я действительно хочу знать, чего мне не хватает.Почему он находит /Error.cshtml для других ошибок, но не для ошибки 404?

1 Ответ

8 голосов
/ 10 марта 2011

Кроме установки customErrors="On", вы определили определенный редирект для 404 ошибок?

Если вы, скажем, ErrorController настроили ваш web.config, например, например:

<customErrors mode="On" defaultRedirect="/error/Problem">
    <error statusCode="404" redirect="error/FileNotFound"/>
</customErrors>

Или вы предпочитаете статические html-страницы за ваши ошибки:

<customErrors mode="On" defaultRedirect="Problem.html">
  <error statusCode="404" redirect="FileNotFound.html"/>
</customErrors>

Возможно, вы захотите взглянуть на этот вопрос для получения дополнительной информации: ASP.NET MVC HandleError .

Для улучшенной обработки ошибок в MVC вы также можете взглянуть на ELMAH (Модули регистрации ошибок и обработчики):

...