在试图找出为什么Global.asax无法工作的同时,我决定转向自定义错误并开始遇到问题。我正在测试404(找不到页面),它一直给我标准服务器错误页面而不是我自己的页面。
我尝试在IIS端设置它并且不起作用。实际上,设置匹配似乎会引发更多错误。我已删除该更改以将其返回到当前问题。我提供了我为制作此错误页面所做的更改。也许比我更聪明的人可以弄清楚出了什么问题?
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/Error.aspx" />
任何帮助都受到广泛赞赏!我确实检查了Error.aspx是否存在,它确实存在,我知道它不是一个真正的404页面未找到问题
编辑:尝试建议重复的答案,但它不起作用
编辑2:这是屏幕上显示的错误
HTTP错误404.0 - 未找到
您要查找的资源已被删除,名称已更改或暂时不可用。
最有可能的原因是:
- Web服务器上不存在指定的目录或文件。
- 网址包含印刷错误。
- 自定义过滤器或模块(如URLScan)会限制对文件的访问。
你可以尝试的事情:
- 在Web服务器上创建内容。
- 查看浏览器网址。
- 检查失败的请求跟踪日志,并查看哪个模块正在调用SetStatus。欲了解更多信息,请点击此处。
详细错误信息:
模块 IIS Web Core
通知 MapRequestHandler
处理程序 StaticFile
错误代码 0x80070002
答案 0 :(得分:-1)
我建议你使用一个特定于此的控制器,例如:
[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自定义错误,例如上面的代码。