首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >自定义ASP.NET MVC404的路由错误页

自定义ASP.NET MVC404的路由错误页
EN

Stack Overflow用户
提问于 2009-02-16 16:37:05
回答 10查看 163.8K关注 0票数 120

当有人输入的网址没有调用ASP.NET MVC中的有效操作或控制器,而不是显示通用的“资源未找到”ASP.NET错误时,我试图创建一个自定义的HTTP404错误页面。

我不想使用web.config来处理这个问题。

有没有什么路由魔术可以让我捕捉到任何无效的URL?

更新:我尝试了给出的答案,但仍然收到丑陋的“资源未找到”消息。

另一个更新: Ok,显然RC1发生了一些变化。我甚至尝试过专门在HttpException上捕获404,但它仍然给出“找不到资源”的页面。

我甚至用过MvcContrib的资源特性,但什么都没有--同样的问题。有什么想法吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 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?

票数 11
EN

Stack Overflow用户

发布于 2011-09-16 16:58:14

我已经尝试在生产服务器上启用自定义错误3个小时了,似乎我找到了在ASP.NET MVC中如何在没有任何路由的情况下做到这一点的最终解决方案。

要在IIS应用程序中启用自定义错误,我们需要( ASP.NET 7+):

  1. system.web部分下的web配置中配置自定义页面:

RemoteOnly意味着在本地网络上你会看到真正的错误(在开发过程中非常有用)。我们还可以为任何错误代码重写错误页面。

  • 设置神奇的响应参数和响应状态代码(在错误处理模块中或在错误处理属性中)

HttpContext.Current.Response.StatusCode = 500;HttpContext.Current.Response.TrySkipIisCustomErrors =true;

  • system.webServer部分下的web配置中设置了另一个神奇的设置:

这是我找到的最后一件事,在此之后,我可以在生产服务器上看到自定义错误。

票数 109
EN

Stack Overflow用户

发布于 2009-08-17 16:00:30

我通过创建一个返回本文中的视图的ErrorController来实现错误处理。我还必须将“全部捕获”添加到global.asax中的路由。

如果它不在Web.config中,我看不到它如何到达这些错误页面。我的Web.config必须指定:

代码语言:javascript
复制
customErrors mode="On" defaultRedirect="~/Error/Unknown"

然后我还补充道:

代码语言:javascript
复制
error statusCode="404" redirect="~/Error/NotFound"
票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/553922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档