С ошибками Http 500 вы, вероятно, получаете страницу по умолчанию, поскольку к контроллеру применен атрибут HandleError
. Вы можете указать представление в атрибуте HandleError
для типа ошибки, который вы хотели бы указать, но не очень хорошо разработан для обработки HttpException
с. Если вы удалите этот атрибут из вашего контроллера, то по умолчанию должен использоваться материал asp.net. Вы также можете просто переопределить OnException
в вашем базовом контроллере.
При ошибках Http 404 возникает перегрузка для return View(string, string);
, которую вы непреднамеренно используете. Приведите путь как объект (meh) или используйте именованные параметры (ура), и он будет использовать путь в качестве модели для вашего представления. Сейчас он думает, что это имя главной страницы, которую вы хотите использовать.
Это сложная проблема, и вы также можете найти больше информации здесь .
Немного придирка, но я также HIGHLY рекомендую устанавливать только Response.StatusCode
в методе .Execute()
класса, который наследует ActionResult
. Концептуально, результатом действия является часть кода, которая должна формировать ответ, а реализация части этого за пределами ActionResult
, как вы делаете здесь, в своем контроллере, склонна к очень трудным поискам ошибок. Я знаю, что HttpStatusCodeResult
, поставляемый с MVC2, не позволяет вам выбрать представление, которое будет возвращаться вместе с результатом, но довольно просто бросить ваше собственное наследование от ViewResult
.