asp.net-mvc - 在 Asp.net MVC 中抛出/返回 404 actionresult 或异常并让 IIS 处理它

标签 asp.net-mvc http iis-7

如何从我的操作中抛出 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 页面

:(

我该怎么办?

最佳答案

ASP.NET MVC 3 引入了 HttpNotFoundResult应优先使用操作结果,而不是使用 http 状态代码手动抛出异常。 这也可以通过 Controller.HttpNotFound 返回 Controller 上的方法:

public ActionResult MyControllerAction()
{
   ...

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

在 MVC 3 之前,您必须执行以下操作:

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

关于asp.net-mvc - 在 Asp.net MVC 中抛出/返回 404 actionresult 或异常并让 IIS 处理它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1998328/

相关文章:

mysql - MYSQL 和 MVC3 SQL 连接错误\ProviderManifestToken 但我正在使用 MySQL

IIS 中缺少 HTTP 绑定(bind)

javascript - 使用 AngularJS 进行跨域 HTML 解析

json - 如果 Content-Type 是 application/json,空体是否正确?

iis-7 - 为 AngularJS HTML5Mode 配置 IIS URL 重写模块仍然无法正常工作

c# - 如何访问 ASP.NET Core 服务中的路由数据/值提供程序数据?

asp.net-mvc - 如何替换 Asp.net MVC 2 中的默认 ModelState 错误消息?

javascript - ASP.Net MVC 中单选按钮的刷新问题

iis - 经典ASP-捕获500个错误

.net - 使用 wcf Rest 服务在 iis7 上显示错误?