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