zoukankan      html  css  js  c++  java
  • Asp.Net MVC中捕捉错误路由并设置默认Not Found页面。

    在Global中写一个Application_Error捕捉错误路由并重定向到Not Found页面。这里是全局性抓取错误路由,此处还可以写由错误路由导致访问失败的日志记录。

     1   protected void Application_Error(object sender, EventArgs e)
     2         {
     3             var httpContext = ((MvcApplication)sender).Context;
     4             var currentController = "";
     5             var currentAction = "";
     6             var currentRouterData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));
     7 
     8             if (currentRouterData != null)
     9             {
    10                 if (currentRouterData.Values["controller"] != null && !string.IsNullOrEmpty(currentRouterData.Values["controller"].ToString()))
    11                 {
    12                     currentController = currentRouterData.Values["controller"].ToString();
    13                 }
    14 
    15                 if (currentRouterData.Values["action"] != null && !string.IsNullOrEmpty(currentRouterData.Values["action"].ToString()))
    16                 {
    17                     currentAction = currentRouterData.Values["action"].ToString();
    18                 }
    19             }
    20 
    21             var ex = Server.GetLastError();
    22             //record error log here.
    23 
    24             var controller = new ErrorController();
    25             var routeData = new RouteData();
    26             var action = "Index";
    27 
    28             if (ex is HttpException)
    29             {
    30                 var httpEx = ex as HttpException;
    31 
    32                 switch (httpEx.GetHttpCode())
    33                 {
    34                     case  404:
    35                         action = "Not Found";
    36                         Response.Redirect("/Error/index");
    37                         break;
    38                 }
    39 
    40                 httpContext.ClearError();
    41                 httpContext.Response.Clear();
    42                 httpContext.Response.StatusCode = ex is HttpException ? ((HttpException)ex).GetHttpCode() : 500;
    43                 httpContext.Response.TrySkipIisCustomErrors = true;
    44 
    45                 routeData.Values["controller"] = "Error";
    46                 routeData.Values["action"] = action;
    47             }
    48         }

    NotFound页面:

     1 @{
     2     Layout = null;
     3 }
     4 
     5 <!DOCTYPE html>
     6 <html>
     7 <head>
     8     <meta charset="utf-8">
     9     <meta name="robots" content="noindex,nofollow">
    10     <meta name="viewport" content="width=device-width,maximum-scale=1,user-scalable=no,minimal-ui">
    11     <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,600,800&amp;subset=latin,latin-ext">
    12     <link rel="stylesheet" type="text/css" href="https://cdn.travel.sygic.com/travel.sygic.com_lp/css/404.css?4aed45ea0fff817941fb48877a968cf6cc920152">
    13     <title>
    14         404 Not found
    15     </title>
    16 
    17 </head>
    18 <body>
    19     <div class="stars"></div>
    20 
    21     <div class="sun-moon">
    22         <div class="sun"></div>
    23         <div class="moon"></div>
    24     </div>
    25 
    26     <div id="js-hills" class="background hills"></div>
    27     <div id="js-country" class="background country"></div>
    28     <div id="js-foreground" class="background foreground"></div>
    29 
    30     <div class="error-content">
    31         Sorry, that page never returned<br>
    32         from a Consultant to the <a href="/go/region:377">Marykay</a>.
    33     </div>
    34 
    35     <a href="https://www.marykay.com.cn/" class="button-home">Go home</a>
    36 
    37     <div class="code">
    38         <span>4</span>
    39         <span>0</span>
    40         <span>4</span>
    41     </div>
    42 </body>
    43 </html>

    在地址栏输入错误的路由-》效果

    404页面来源于:

    错误的艺术!20个创意的404错误页面设计

    http://www.cnblogs.com/lhb25/p/creative-examples-of-404-error-pages.html

  • 相关阅读:
    在服务端合并css和js以减少http请求数
    IE6 IE7(Q) IE8(Q) 不完全支持 !important 规则
    js 获取高度,宽度,绑定事件
    一段很有用的获取页面高度的js
    filter用AJAX取回动态数据进行筛选的时候,必须同时指定标签类型和 ID,才能正常进行筛选,要不然在Firefox下会出错
    匿名函数的链式调用
    js从数组中删除指定值(不是指定位置)的元素
    纯CSS的方法解决文字溢出与截断的问题
    javascript sort 排序
    WIN10系统找不到MSVCP120.dll
  • 原文地址:https://www.cnblogs.com/kejie/p/6693664.html
Copyright © 2011-2022 走看看