Asp.Net MVC中捕捉错误路由并设置默认Not Found页面。
2017-04-11 15:17
537 查看
在Global中写一个Application_Error捕捉错误路由并重定向到Not Found页面。这里是全局性抓取错误路由,此处还可以写由错误路由导致访问失败的日志记录。
NotFound页面:
在地址栏输入错误的路由-》效果
protected void Application_Error(object sender, EventArgs e) { var httpContext = ((MvcApplication)sender).Context; var currentController = ""; var currentAction = ""; var currentRouterData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext)); if (currentRouterData != null) { if (currentRouterData.Values["controller"] != null && !string.IsNullOrEmpty(currentRouterData.Values["controller"].ToString())) { currentController = currentRouterData.Values["controller"].ToString(); } if (currentRouterData.Values["action"] != null && !string.IsNullOrEmpty(currentRouterData.Values["action"].ToString())) { currentAction = currentRouterData.Values["action"].ToString(); } } var ex = Server.GetLastError(); //record error log here. var controller = new ErrorController(); var routeData = new RouteData(); var action = "Index"; if (ex is HttpException) { var httpEx = ex as HttpException; switch (httpEx.GetHttpCode()) { case 404: action = "Not Found"; Response.Redirect("/Error/index"); break; } httpContext.ClearError(); httpContext.Response.Clear(); httpContext.Response.StatusCode = ex is HttpException ? ((HttpException)ex).GetHttpCode() : 500; httpContext.Response.TrySkipIisCustomErrors = true; routeData.Values["controller"] = "Error"; routeData.Values["action"] = action; } }
NotFound页面:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="robots" content="noindex,nofollow"> <meta name="viewport" content="width=device-width,maximum-scale=1,user-scalable=no,minimal-ui"> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,800&subset=latin,latin-ext"> <link rel="stylesheet" type="text/css" href="https://cdn.travel.sygic.com/travel.sygic.com_lp/css/404.css?4aed45ea0fff817941fb48877a968cf6cc920152"> <title> 404 Not found </title> </head> <body> <div class="stars"></div> <div class="sun-moon"> <div class="sun"></div> <div class="moon"></div> </div> <div id="js-hills" class="background hills"></div> <div id="js-country" class="background country"></div> <div id="js-foreground" class="background foreground"></div> <div class="error-content"> Sorry, that page never returned<br> from a Consultant to the <a href="/go/region:377">Marykay</a>. </div> <a href="https://www.marykay.com.cn/" class="button-home">Go home</a> <div class="code"> <span>4</span> <span>0</span> <span>4</span> </div> </body> </html>
在地址栏输入错误的路由-》效果
404页面来源于:
错误的艺术!20个创意的404错误页面设计
http://www.cnblogs.com/lhb25/p/creative-examples-of-404-error-pages.html相关文章推荐
- asp.net mvc设置area页面为默认路由
- asp.net mvc 错误路由默认配置
- Asp.net MVC area文件夹下设置默认显示页面
- asp.net mvc修改默认路由(刚刚运行进入那个页面由你控制)
- ASP.NET MVC 里redirectMode="ResponseRewrite" 时候无法使用 Controller 来设置特定的错误页面。
- asp.net MVC 设置页面否编译
- 设置ASP.NET MVC站点默认页为html页
- asp.net mvc 通过修改路由规则来实现页面的URL多参数传递
- 根据路由参数设置模板页(ASP.NET MVC)
- 页面中设置默认的回车激活按钮, ASP.NET DefaultButton 属性
- ASP.NET MVC2.0学习笔记:路由设置
- 为Asp.net MVC中的RenderSection设置默认内容
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- ASP.NET MVC路由设置优化的两个方法
- 每日总结(二)C#判断输入内容为数字、Sharepoint回收应用程序池错误、Asp.Net 会发或回调参数无效、DropDownList动态绑定且设置默认选择项
- asp.net mvc 3 配置全局错误处理 Web.config中设置CustomError
- 打开ASP.NET Web项目时,此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处的项目文件夹。返回的错误是: 无法打开Web项目“”。返回的错误是: 无法打开Web项目“...”。文件路径“...”怀URL“...”不
- 在ASP.NET MVC 如何在Response.StatusCode = 404的同时,显示友好的自定义错误页面
- 认识 ASP.NET 3.5 MVC 路由 理解默认路由表
- asp.net设置默认打开页面 Web.config defaultDocument