目前使用了微软的MVC4搭建了一个网站,在web.config中配置了错误页:
<customErrors mode="On" defaultRedirect="~/ErrorPage/default.html">
<error statusCode="403" redirect="~/ErrorPage/403.html" />
<error statusCode="404" redirect="~/ErrorPage/404.html" />
<error statusCode="500" redirect="~/ErrorPage/500.html" />
</customErrors>
现在有个问题,如果是路径在根目录下的Controller出错,是会正确跳转到错误页中,可是如果在二级目录下的控制器,则会找不到错误页,可我配置明明是根目录,“~”就是指网站根目录吧。我在文档中查过了就是这样配置。
比如路径是 /User/Details ,系统会在/User/Details/ErrorPage/500.html 查找,怎么解决这个问题呢?谢谢
试过了,去掉"~"也是找不到
试试把~/ErrorPage/500.html改为/ErrorPage/500.html
封装一个异常处理的过滤器 调整错误页
public class ExceptionFilterAttribute : HandleErrorAttribute { public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); string excepitonInfo = filterContext.Exception.ToString(); LogHelper.OutputLog(excepitonInfo); filterContext.HttpContext.Response.Redirect("/WebPages/Error.htm"); } }
在Global.asax文件 修改RegisterGlobalFilters的过滤器
public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new ExceptionFilterAttribute()); //替换为处理异常的过滤器 }
以前貌似遇到过类似的状况,你的ErrorPage文件夹是存放在根目录下还是在Views里?
一般MVC查找页面,先在mvc根目录下查找页面名称,然后再通过控制器查找对应Views里页面名称,如果你直接在Views里创建了ErrorPage文件夹,是肯定找不到的,因为它无法通过控制器找到对应Views里的页面。个人拙见,希望能帮到。
路径问题。你在逐鹿有注册那边把html的路径给忽略试试