C#学习教程:使用布局的自定义错误页面虽然静态页面可以工作,但它需要重新构建我们此时希望避免的导航栏。我目前正在使用以下内容指定自定义错误页面。Asp.neterror处理IISerror处理有没有一种方法可以实现可以处理IIS错误和Asp.net错误的动态自定义错误页面?我在ASP.NetMVC项目中解决了同样的问题,通过处理程序通过.Net管理所有内容。首先创建一个ErrorController来处理请求错误和找不到对象。[AllowAnonymous]publicclassErrorController:Controller{//GET:错误publicActionResultNotFound(){Response.StatusCode=(int)System.Net.HttpStatusCode.NotFound;Response.TrySkipIisCustomErrors=true;HttpContext.Response.StatusCode=(int)System.Net.HttpStatusCode.NotFound;HttpContext.Response.TrySkipIisCustomErrors=true;返回视图();}publicActionResultError(){Response.StatusCode=(int)System.Net.HttpStatusCode.InternalServerError;看法();您会注意到我调用TrySkipIisCustomErrors来尝试避免IIS错误,然后创建一个基本控制器来处理将映射到ErrorController.NotFound操作的任何未知操作。publicabstractclassFrontOfficeControllerBase:Controller{protectedoverridevoidHandleUnknownAction(stringactionName){vardata=ViewData;//解析视图的自定义代码。//ViewResultview=this.View(c=>c.NotFound());//手动创建带视图的视图DataViewResultview=newViewResult();view.ViewData=newViewDataDictionary();view.ViewData["controller"]="错误";view.ViewData["action"]="NotFound";if(data!=null&&data.Count>0){data.ToList().ForEach(view.ViewData.Add);}Response.StatusCode=(int)System.Net.HttpStatusCode.NotFound;Response.TrySkipIisCustomErrors=true;view.ExecuteResult(this.ControllerContext);}}所有控制器都将继承自这个基本控制器。catchall路由在所有其他路由之后配置。routes.MapRoute(name:"404-NotFound",url:"NotFound",defaults:new{controller="Error",action="NotFound"});routes.MapRoute(name:"500-Error",url:"Error",defaults:new{controller="Error",action="Error"});路线。MapRoute(名称:“CatchAll”,网址:“{*any}”,默认值:new{controller=“Error”,action=“NotFound”});这确保如果路由与我的任何控制器都不匹配,它将安全地路由到ErrorController.NotFound操作。对于视图,我在Views/Shared文件夹中创建了相应的NotFound.shtml和Error.cshtml,它们受益于访问根布局,这正是我认为您正在寻找的。最后,我能够从web.config中删除customErrors和httpErrors,因为它们不再需要,因为每个请求都由处理程序管理并相应地路由。这种结构的最初想法来自这篇文章,我在这篇文章中混合并匹配了可用的选项,直到找到适合我需要的解决方案。ASP.NETMVC中的异常处理(解释了6种方法)希望这会有所帮助。我也在纠结这个问题,找了很久。据我所知,没有办法创建动态自定义错误页面来为未进入.net管道的请求提供IIS错误。和你一样,我最终得到了两个404错误页面。由于请求进入.net管道而导致文件未找到错误的动态.aspx,以及从未进入.net管道的文件未找到请求的.html。贬低你的问题的人可能没有意识到你在问一个非常好的、很难解决的问题。我会提出你的问题来帮助弥补。以上就是C#学习教程:CustomErrorPagewithLayout分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
