asp.net-mvc-4 – 在MVC4中捕获404错误
发布时间:2020-12-16 00:05:08 所属栏目:asp.Net 来源:网络整理
导读:我有一个问题,因为HTTP错误404.0 – 未找到.我打开了 customErrors mode="On" defaultRedirect="~/Error/General" error statusCode="404" redirect="~/Error/HttpError404" / error statusCode="500" redirect="~/Error/HttpError500" / /customErrors 在We
我有一个问题,因为HTTP错误404.0 – 未找到.我打开了
<customErrors mode="On" defaultRedirect="~/Error/General"> <error statusCode="404" redirect="~/Error/HttpError404" /> <error statusCode="500" redirect="~/Error/HttpError500" /> </customErrors> 在Web.Config中.但问题仍然存在.我也试过这个解决方案(但它永远不会到达方法): protected void Application_Error() { var exception = Server.GetLastError(); var httpException = exception as HttpException; Response.Clear(); Server.ClearError(); var routeData = new RouteData(); routeData.Values["controller"] = "Errors"; routeData.Values["action"] = "General"; routeData.Values["exception"] = exception; Response.StatusCode = 500; if (httpException != null) { Response.StatusCode = httpException.GetHttpCode(); switch (Response.StatusCode) { case 403: routeData.Values["action"] = "HttpError404"; break; case 404: routeData.Values["action"] = "HttpError404"; break; } } IController errorsController = new ErrorController(); var rc = new RequestContext(new HttpContextWrapper(Context),routeData); errorsController.Execute(rc); } 由@Darin Dimitrov提供 这是控制器: public class ErrorController : Controller { public ActionResult HttpError404(string error) { ViewData["Title"] = "Sorry,an error occurred while processing your request. (404)"; ViewData["Description"] = error; return View("Index"); } public ActionResult HttpError500(string error) { ViewData["Title"] = "Sorry,an error occurred while processing your request. (500)"; ViewData["Description"] = error; return View("Index"); } public ActionResult General(string error) { ViewData["Title"] = "Sorry,an error occurred while processing your request."; ViewData["Description"] = error; return this.View(); } 解决方法
好的,我找到了一个解决方案,感谢@ alistair-findlay和
this website.
这就是web.config现在的样子: <system.web> <customErrors mode="On" defaultRedirect="~/Error/General" redirectMode="ResponseRewrite"> </customErrors> </system.web> <system.webServer> <httpErrors errorMode="Detailed" defaultResponseMode="Redirect"> <clear/> <error statusCode="404" path="/Error/HttpError404"/> </httpErrors> </system.webServer 这是Global.asax.cs: protected void Application_Error() { if (Context.IsCustomErrorEnabled) ShowCustomErrorPage(Server.GetLastError()); } private void ShowCustomErrorPage(Exception exception) { var httpException = exception as HttpException ?? new HttpException(500,"Internal Server Error",exception); Response.Clear(); var routeData = new RouteData(); routeData.Values.Add("controller","Error"); routeData.Values.Add("fromAppErrorEvent",true); switch (httpException.GetHttpCode()) { case 403: routeData.Values.Add("action","HttpError403"); break; case 404: routeData.Values.Add("action","HttpError404"); break; case 500: routeData.Values.Add("action","HttpError500"); break; default: routeData.Values.Add("action","GeneralError"); routeData.Values.Add("httpStatusCode",httpException.GetHttpCode()); break; } Server.ClearError(); IController controller = new ErrorController(); controller.Execute(new RequestContext(new HttpContextWrapper(Context),routeData)); } 最后: public class ErrorController : Controller { public ActionResult HttpError403(string error) { ViewBag.Description = error; return this.View(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 与Ninject集成测试
- asp.net-mvc – ASP.NET MVC局部视图和表单动作名称
- asp.net – .net 4.6框架是在位升级,那么.net framework 4.
- 如何在非ASP.NET应用程序中使用ASP.NET Cache对象?
- asp.net – IIS7 HttpModule和ISAPI Filter执行顺序
- 如何在ASP.NET按钮中使用Twitter Bootstrap图标?
- asp.net-mvc – 使用数字属性的MVC3 DataAnnotationsExtens
- asp.net – 两个域之间的会话共享
- asp.net – 总是显示FooterTemplate,甚至没有数据
- asp.net-mvc – 添加TwilioController基类继承后,Microsoft
推荐文章
站长推荐
- 领先技术 - ASP.NET Core 中的 Cookie、声明和身
- asp.net-mvc – 什么使Web应用程序成为触摸板友好
- .net – ApiController与ODataController在露出D
- asp.net – 任何方式构建Google文档,如PDF文件的
- asp.net-mvc – MVC区域 – 非区域路线解析为区域
- ASP.NET通用提供商
- 如何避免ASP.NET中的快速页面刷新?
- ASP.NET中的Accounting Style字符串格式
- asp.net – HttpContext如何在.NET中运行
- asp.net – Static WebMethod中的ResolveUrl
热点阅读