自定义错误页不起作用

本文关键字:不起作用 错误 自定义 | 更新日期: 2023-09-27 18:27:09

在试图弄清楚Global.asax不起作用的原因时,我决定转到"自定义错误",并开始遇到问题。我正在测试404(找不到页面),它一直给我标准的服务器错误页面,而不是我自己的页面。

我试着在IIS方面设置它,但没有成功。事实上,设置匹配似乎会引发更多错误。我删除了该更改,将其返回到当前问题。我已经提供了我为制作此错误页面所做的更改。也许有一个比我聪明的人能弄清楚出了什么问题?

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error.aspx" />

我们非常感谢您的帮助!我确实检查了一下Error.aspx是否存在,它确实存在,所以我知道它不是一个真正的404页面,没有找到问题

编辑:尝试建议重复答案,但不起作用

编辑2:这是屏幕上出现的错误

HTTP错误404.0-找不到

您要查找的资源已被删除、名称已更改或暂时不可用。

最可能的原因:

  • 指定的目录或文件在Web服务器上不存在
  • URL包含一个印刷错误
  • 自定义筛选器或模块(如URLScan)限制对文件的访问

你可以尝试的东西:

  • 在Web服务器上创建内容
  • 查看浏览器URL
  • 检查失败的请求跟踪日志,查看哪个模块正在调用SetStatus。有关更多信息,请单击此处

详细错误信息:

模块IIS Web核心

通知映射请求处理程序

处理程序静态文件

错误代码0x80070002

自定义错误页不起作用

我建议您使用控制器来指定,例如:

[AllowAnonymous]
    public class ErroHttpController : Controller
    {
        [Route("RequestError")]
        public ActionResult RequestError()
        {
            Response.StatusCode = 400;
            return View();
        }
        [Route("NotFound")]
        public ActionResult NotFound()
        {
            Response.StatusCode = 404;
            return View();
        }
        [Route("InternalError")]
        public ActionResult InternalError()
        {
            Response.StatusCode = 500;
            return View();
        }
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Response.TrySkipIisCustomErrors = true;
            base.OnActionExecuting(filterContext);
        }
    }
}

在你的web.config中,你应该做:

<customErrors mode="RemoteOnly">
      <error statusCode="400" redirect="/RequestError"/>
      <error statusCode="404" redirect="/NotFound"/>
      <error statusCode="500" redirect="/InternalError"/>
</customErrors>

必须跳过OnActionExecuting方法中的IIS自定义错误,如上面的代码。