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

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

Я определил свой customErrors как так

<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;
    }
}

Но это просто показывает пустой странице и не моему/not-found страница

:(

Что я должен сделать?

47
задан CVertex 4 January 2010 в 08:58
поделиться

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");
133
ответ дан 26 November 2019 в 19:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: