Подтвердить что ты не робот

Бросать/возвращать 404 actionresult или исключение в MVC Asp.net и позволять IIS обрабатывать его

как мне удалить исключение/результат 404 или FileNotFound из моего действия и позволить IIS использовать мою конфигурацию конфигурации customErrors, чтобы показать страницу 404?

Я определил свои пользовательские ошибки как таковые

<customErrors mode="On" defaultRedirect="/trouble">
  <error statusCode="404" redirect="/notfound" />
</customErrors>

Моя первая попытка actionResult, которая пытается добавить это, не работает.

public class NotFoundResult : ActionResult {
    public NotFoundResult() {

    }

    public override void ExecuteResult(ControllerContext context) {
        context.HttpContext.Response.TrySkipIisCustomErrors = false;
        context.HttpContext.Response.StatusCode = 404;
    }
}

Но это просто показывает пустую страницу, а не мою/не найденную страницу

: (

Что мне делать?

4b9b3361

Ответ 1

В ASP.NET MVC 3 был представлен результат действия HttpNotFoundResult, который следует использовать в качестве предпочтительного для того, чтобы вручную выбрасывать исключение с кодом статуса http, Это также можно вернуть с помощью метода Controller.HttpNotFound на контроллере:

public ActionResult MyControllerAction()
{
   ...

   if (someNotFoundCondition)
   {
       return HttpNotFound();
   }
}

До MVC 3 вам нужно было сделать следующее:

throw new HttpException(404, "HTTP/1.1 404 Not Found");