global中拦截404错误的实现方法

1.

    void Application_Error(object sender, EventArgs e)
    {
    if(Context != null)
    {
    HttpContext ctx = HttpContext.Current;
    Exception ex = ctx.Server.GetLastError();
    HttpException ev = ex as HttpException;
    if(ev!= null)
    {
    if(ev.GetHttpCode() == 404)
    {
    ctx.ClearError();
    Response.Redirect("~/nofound.aspx", false);
    Response.End();
    }
    else
    {
    Server.Transfer("~/Error.aspx", false);
    }
    }
    }
    }

2.

        //全站 Error 处理
        protected void Application_Error()
        {
            //获取关于当前请求的 HTTP 特定信息。
            if (Context != null)
            {
                Exception ex = HttpContext.Current.Server.GetLastError() as Exception;
                //HttpException ex = Context.Server.GetLastError() as HttpException;
                if (ex != null)
                {
                    //404
                    if (ex is HttpException)
                    {
                        HttpException hEx = ex as HttpException;
                        if (hEx.GetHttpCode() == 404)
                        {
                            Context.ClearError();
                            Context.Response.Redirect("~/RouteOne/NotFind/?from=" + Context.Request.UrlReferrer);
                            Context.Response.End();
                        }
                    }
                    else
                    {
                        //服务器错误
                        //Context.Server.Transfer("~/RouteOne/Error/?msg=" + ex.Message);
                        Context.Response.Redirect("~/RouteOne/Error/?msg=" + Context.Request.UrlReferrer);
                        Context.Response.End();
                    }
                }
            }
        }
原文地址:https://www.cnblogs.com/tianma3798/p/4235681.html