Атрибут HandleError не работает ожидаемым образом

#c# #asp.net-mvc #asp.net-mvc-2

#c# #asp.net-mvc #asp.net-mvc-2

Вопрос:

У меня есть ASP.Net Веб-приложение MVC 2, где у меня есть HomeController. Метод Index генерирует несанкционированное исключение. У меня есть customErrors = включено. Теперь я хочу показать файл view Error.aspx в общей папке с исключением.Сообщение. Но я получаю ресурс не найден / Ошибка в браузере.

Примечание: я просмотрел все соответствующие ссылки на StackOverflow.

какая-нибудь помощь?

Комментарии:

1. Пожалуйста, опубликуйте какой-нибудь код, как вы используете пользовательский атрибут error. И обратите внимание, что по умолчанию атрибут загружает error.aspx представление по умолчанию. Поэтому убедитесь, что вам не нужно его удалять.

Ответ №1:

Шаг за шагом:

  1. Создайте новый ASP.NET Проект MVC с использованием мастера Visual Studio по умолчанию
  2. Измените HomeController так, чтобы он выглядел следующим образом:

     [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            throw new Exception("oops");
        }
    }
      
  3. Добавьте следующее в <system.web> раздел web.config:

     <customErrors mode="On" />
      
  4. Запустите приложение

  5. Как и ожидалось, ~/Views/Shared/Error.aspx отображается

Комментарии:

1. Спасибо. Но я хочу передать объект Exception в это представление ошибок, чтобы я мог отобразить сообщение из него.

2. @Morin, объект исключения уже передан в Error.aspx представление с помощью HandleError фильтра действий. Это представление строго типизировано для System.Web.Mvc.HandleErrorInfo . Таким образом, внутри него вы можете просто: <%= Html.DisplayFor(x => x.Exception.Message) %> отобразить сообщение об ошибке.