当有人输入的网址没有调用ASP.NET MVC中的有效操作或控制器,而不是显示通用的“资源未找到”ASP.NET错误时,我试图创建一个自定义的HTTP404错误页面。
我不想使用web.config来处理这个问题。
有没有什么路由魔术可以让我捕捉到任何无效的URL?
更新:我尝试了给出的答案,但仍然收到丑陋的“资源未找到”消息。
另一个更新: Ok,显然RC1发生了一些变化。我甚至尝试过专门在HttpException
上捕获404,但它仍然给出“找不到资源”的页面。
我甚至用过MvcContrib的资源特性,但什么都没有--同样的问题。有什么想法吗?
发布于 2009-02-16 17:40:52
只需在routes表的末尾添加catch all route,并显示您想要的任何页面。
请参阅:How can i make a catch all route to handle '404 page not found' queries for ASP.NET MVC?
发布于 2011-09-16 16:58:14
我已经尝试在生产服务器上启用自定义错误3个小时了,似乎我找到了在ASP.NET MVC中如何在没有任何路由的情况下做到这一点的最终解决方案。
要在IIS应用程序中启用自定义错误,我们需要( ASP.NET 7+):
system.web
部分下的web配置中配置自定义页面:RemoteOnly
意味着在本地网络上你会看到真正的错误(在开发过程中非常有用)。我们还可以为任何错误代码重写错误页面。
HttpContext.Current.Response.StatusCode = 500;HttpContext.Current.Response.TrySkipIisCustomErrors =true;
system.webServer
部分下的web配置中设置了另一个神奇的设置:这是我找到的最后一件事,在此之后,我可以在生产服务器上看到自定义错误。
发布于 2009-08-17 16:00:30
我通过创建一个返回本文中的视图的ErrorController来实现错误处理。我还必须将“全部捕获”添加到global.asax中的路由。
如果它不在Web.config中,我看不到它如何到达这些错误页面。我的Web.config必须指定:
customErrors mode="On" defaultRedirect="~/Error/Unknown"
然后我还补充道:
error statusCode="404" redirect="~/Error/NotFound"
https://stackoverflow.com/questions/553922
复制相似问题