如何在发生应用程序错误时显示自定义错误页面而不更改URL?
发生应用程序错误时,如何向客户显示自定义错误页面而不路由到另一个Url?
答案 0 :(得分:2)
在web.config中检查配置是否如下:
<system.web>
...
<customErrors mode="On">
<error statusCode="404" redirect="~/custom404.html"/>
<customErrors
</system.web>
答案 1 :(得分:1)
<customErrors mode="On" defaultRedirect="~/custom404.html">
</customErrors>
答案 2 :(得分:0)
您也可以在代码中执行此操作。对于MVC项目,可以调整Controller的函数OnException,执行一些日志记录和其他内容,然后从格式错误信息的后台加载Error.URL中的内容。
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext != null && filterContext.Exception != null && !filterContext.ExceptionHandled)
{
ViewBag.Exception = filterContext.Exception;
filterContext.Result = View("~/Views/Shared/Error.cshtml");
filterContext.ExceptionHandled = true;
Log.Error(filterContext.Exception.Message +":" + filterContext.Exception.StackTrace);
}
}
在这个片段中,项目中的所有控制器都从BaseController继承,其中覆盖了函数OnException。
答案 3 :(得分:0)
在Web.config
文件
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/errors/error">
</customErrors>
在任何错误中,它都会重定向到/errors/error
页面。请注意redirectMode
属性。使用值ResponseRewrite
,网址不会更改。
现在,如果要为特定错误显示不同的页面,可以使用以下内容进行设置。
<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/errors/error">
<error statusCode="404" redirect="/errors/error404" />
<error statusCode="500" redirect="/errors/error500" />
</customErrors>