Asp.net MVC web.config 中的客户错误

Customer Error in Asp.net MVC web.config

在我的 MVC Web 应用程序中,我需要一个 404 页面来处理所有错误。我正在编辑 web.config 文件,其中这一行:

<customErrors mode="On">
  <error redirect="/error/404" statusCode="404" /> 
</customErros>

可以,但在浏览器中 url 我看到了 URL/error/404。我怎样才能看到被调用的URL?

谢谢。

customErrors 节点实际上比 httpErrors 旧,所以试试这个。确保您的 web.config 中有这些节点作为 system.webServer 节点的子节点:

<httpErrors>
  <error statusCode="404" path="/error/404" responseMode="ExecuteURL" />
</httpErrors>

或者,您可以使用 customErrors 以两种方式执行此操作: 一是修改个别error节点,二是修改customErrors节点。我不记得其中之一现在是否已过时,但请随意尝试两者。

<error statusCode="404" path="/error/404" responseMode="ExecuteURL"/>

<customErrors mode="On" redirectMode="ResponseRewrite">

如果上述方法不起作用,则可能会出现其他问题。您检查过 IIS 日志了吗?

链接

httpErrors Documentation

Custom Errors Element documentation(存档)

我在 global.asax 中使用 Application_error 部分求解。我添加了这个方法

    protected void Application_Error(object sender, EventArgs e)
    {
        var exception = Server.GetLastError();
        var httpException = exception as HttpException;
        if (httpException != null && httpException.GetHttpCode() == 404)
        {
            Response.Clear();
            Server.ClearError();
            Response.TrySkipIisCustomErrors = true;

            IController controller = new CommonController();

            var routeData = new RouteData();
            routeData.Values.Add("controller", "Common");
            routeData.Values.Add("action", "PageNotFound");

            var requestContext = new RequestContext(
                 new HttpContextWrapper(Context), routeData);
            controller.Execute(requestContext);

        }
       }

这项工作很好。问题来自控制器:.i.e.如果我没有找到数据库记录,我想要 return 带有默认错误页面的 404 错误。我还想在浏览器中显示名为 url 的原始文件,而不是重定向 url。使用 return 视图();在控制器中,这不会发生。我该如何解决?谢谢