示例#1
0
        protected void Application_Error(object sender, EventArgs e)
        {
            var error = Server.GetLastError();
            var code  = (error is HttpException) ? (error as HttpException).GetHttpCode() : 500;

            if (code == 404)
            {
                var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values;

                string controllerName = null;
                string actionName     = null;
                string id             = null;

                if (routeValues != null)
                {
                    if (routeValues.ContainsKey("action"))
                    {
                        actionName = routeValues["action"].ToString();
                    }
                    if (routeValues.ContainsKey("controller"))
                    {
                        controllerName = routeValues["controller"].ToString();
                    }
                    if (routeValues.ContainsKey("id"))
                    {
                        id = routeValues["id"].ToString();
                    }
                }

                var routeData = new RouteData();
                routeData.Values.Add("controller", "Dynamic");
                routeData.Values.Add("action", actionName);
                routeData.Values.Add("entity", controllerName);
                routeData.Values.Add("entityId", id);

                IController errorController = new DynamicController();

                errorController.Execute(new RequestContext(new HttpContextWrapper(System.Web.HttpContext.Current), routeData));
                Response.End();
            }
        }