В нашем приложении есть страница ошибок, которая должна фиксировать все ошибки в приложении.
<customErrors mode="On" defaultRedirect="~/Content/Error.html" />
Эта страница ошибки по существу выплевывает "Произошла непредвиденная ошибка, обратитесь в службу поддержки со следующим кодом: $ HASH" . Где $ HASH (который задается как значение cookie) представляет собой идентификатор, указывающий на захваченное исключение в журнале.
Тем не менее, когда мы ищем хеш и данные для некоторых ошибок нашего приложения, мы обнаруживаем следующее.
Exception information:
Exception type: InvalidOperationException
Exception message: The view 'Error' or its master was not found or no view
engine supports the searched locations. The following locations were searched:
SomeLocation\Error.spark
Shared\Error.spark
SomeLocation\Error.shade
Shared\Error.shade
~/Views/SomeLocation/Error.aspx
~/Views/SomeLocation/Error.ascx
~/Views/Shared/Error.aspx
~/Views/Shared/Error.ascx
~/Views/SomeLocation/Error.cshtml
~/Views/SomeLocation/Error.vbhtml
~/Views/Shared/Error.cshtml
~/Views/Shared/Error.vbhtml
at System.Web.Mvc.ViewResult.FindView(ControllerContext context)
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at <<More Internals>>
Это означает, что ASP пытается использовать любые движки представления для отображения нашей первоначальной ошибки, Бросить свою собственную ошибку, Удалить нашу первоначальную ошибку.
I Ожидается исключение нашего исходного приложения для регистрации. Не то, что показано выше. Я не ожидаю, что Asp будет искать где-либо, кроме ~/Content/Error.html
, сообщения об ошибках.
Быстрые исправления, которые я пробовал
- Установите
customErrors
defaultRedirect
в местоположение, в которое также будут смотреть ViewEngines. Результат: все ломается
- Создайте представление и контроллер в местоположении, которое могут использовать механизмы представления, и перенаправьте в местоположение, установленное в
web.config
. Результат: хэш ошибки теряется, поскольку данные cookie не задаются.