如何使用库存标准ASP.NET MVC3网站获得自定义404和500错误页面?
我试图在一个库存样本ASP.NET MVC3网站上有2个自定义错误页面。
Darin Dimitrov在这里有一个很好的答案,但它并不适用于我所有的测试条件。
然后广泛流行如何在ASP.NET MVC中正确处理404? 发布..但这只是触及404错误。
有人可以解释一下
- 路线
-
web.config
设置 - 控制器/动作方法
要做这个非常简单的事情:(
接受这个答案的场景:
- VS2010 – >文件 – >新建 – > ASP.NET MVC3项目/ Internet应用程序
- (右键单击解决方案).. – >使用IIS Express
- 错误页面不能是静态html页面。 它们必须是一个我可以传递信息的页面,就像任何其他视图一样(例如,一个
ErrorController
)……
并为测试路线……
-
/Home/Index
– >显示索引页面 -
/Home
– >显示索引页面 -
/
– >显示索引页面 -
/Home/About
– >显示关于页面 -
/asdasd/asdsad/asdas/asddasd/adsad
– > 404 -
/adsa/asda/asd/asd/asd/asd
– > 404 -
/asdsadasda
– > 404
然后将其添加到HomeController.cs
类中..
public ActionResult ThrowException() { throw new NotImplementedException(); }
现在 ..
-
/home/throwexception
– > 500错误
干杯:)
顺便说一下,当使用股票标准的new ASP.NET MVC3
模板时,其中一些真正的长路线(上图)现在给出了非常奇怪的错误页面
我在web.config文件中指定customErrors,如下所示;
我在Global.asax中有一条路线如下;
/// Error Pages /// routes.MapRoute( "Error", // Route name "Error/{errorCode}", // URL with parameters new { controller = "Page", action = "Error", errorCode= UrlParameter.Optional } );
相应的ActionResult执行以下操作,返回相关的自定义错误页面。
// public ActionResult Error(string errorCode) { var viewModel = new PageViewModel(); int code = 0; int.TryParse(errorCode, out code); switch (code) { case 403: viewModel.HtmlTitleTag = GlobalFunctions.FormatTitleTag("403 Forbidden"); return View("403", viewModel); case 404: viewModel.HtmlTitleTag = GlobalFunctions.FormatTitleTag("404 Page Not Found"); return View("404", viewModel); case 500: viewModel.HtmlTitleTag = GlobalFunctions.FormatTitleTag("500 Internal Server Error"); return View("500", viewModel); default: viewModel.HtmlTitleTag = GlobalFunctions.FormatTitleTag("Embarrassing Error"); return View("GeneralError", viewModel); } }
这允许我有许多不同的自定义错误页面。 它可能不是最好或最优雅的解决方案,但它肯定适合我。
您可以在web.config中设置错误页面信息。 此页面讨论了如何执行此操作并使用控制器上设置的HandleErrorAttribute,以便它们使用此配置。
http://deanhume.com/Home/BlogPost/custom-error-pages-in-mvc/4
这似乎是个大问题。
看我的回答是这篇文章:
一劳永逸是什么是处理MVC中的错误,exception和404的最佳路由方法
但我会将这些路由添加到您的测试用例中:
http://www.website.com/yourcontroller/youraction:32
和