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(); } }