Пользовательский код ошибки MVC в Global.asax.cs Application_Error не работает должным образом - PullRequest
0 голосов
/ 19 июня 2019

У меня есть следующие глобальные настройки обработки ошибок для веб-приложения.

Global.asax.cs

protected void Application_Error()
{
    //log error
    _logger.Error("something bad happened", Server.GetLastError());

    //clear error
    Server.ClearError();

    //redirect to error page
    Response.RedirectToRoute(new { controller = "services", action = "error" });
}

Сервисный контроллер с действием ошибки. В этом представлении в качестве модели используется класс ErrorModel.

public ActionResult Error()
{
    return View(new ErrorModel{ Message = "nothing really happened go to bed" });
}

Общий вид:

public ActionResult General()
{
    throw new Exception("Exception XYZ");
}

Когда я отлаживаю приложение с помощью VS F5 и перехожу на *Представление 1014 *, регистрируется правильное исключение (Exception XYZ).

Но при тестировании опубликованного веб-приложения IIS и переходе к представлению /general регистрируется другое неожиданное исключение:

System.InvalidOperationException: переданный в словарь элемент модели имеет тип 'System.Web.Mvc.HandleErrorInfo', но для этого словаря требуется элемент модели типа 'MyWebsite.Models.Services.ErrorModel'.

Exception XYX вообще не регистрируется.Отображается правильный Error вид с правильным сообщением об ошибке (nothing really happened go to bed).

Что я делаю не так?Как мне убедиться, что Exception XYZ зарегистрировано?

В настоящее время я не собираюсь использовать HandleErrorAttribute или override void OnException в контроллере.

EDIT Похоже, что эта проблема уже обсуждалась в 2010 году.ТАК здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...