繁体   English   中英

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 / 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文档

自定义错误元素文档 (已存档)

我在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);

        }
       }

这项工作很好。 问题出在控制器:.ie,如果我找不到数据库记录,我想返回带有默认错误页面的404错误。 我还想在浏览器中显示原始URL,而不是重定向URL。 使用return View(); 在控制器中,这不会发生。 我该如何解决? 谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM