自定义错误页不起作用
本文关键字:不起作用 错误 自定义 | 更新日期: 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自定义错误,如上面的代码。