Бросать/возвращать 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;
}
}
Но это просто показывает пустую страницу, а не мою/не найденную страницу
: (
Что мне делать?
Ответы
Ответ 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");
Ответ 2
Вы можете вызвать Controller.HttpNotFound
http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpnotfound(v=vs.98).aspx
if (model == null)
{
return HttpNotFound();
}
Ответ 3
Это также может помочь;
ASP.NET MVC: выброс 404 исключений вручную из контроллера, когда модель является нулевой