Asp.net mvc MVC 4 HttpNotFound()和404错误

Asp.net mvc MVC 4 HttpNotFound()和404错误,asp.net-mvc,asp.net-mvc-4,http-status-code-404,Asp.net Mvc,Asp.net Mvc 4,Http Status Code 404,我有一个控制器,其中我正在处理url的一部分,如果它符合某些条件,我将返回一个视图,如果不符合,我将返回一个HttpNotFound() 现在我已经设置了一个友好的404页面,如果抛出404,用户将被重定向到该页面,那么为什么HttpNotFound不重定向到此页面 我希望抛出404,然后将页面重定向到web.config中设置的错误页面,但它只显示默认的404页面。我已经检查了其他不存在的URL,这些URL都重定向到正确的错误页面,因为结果表明您要抛出异常: throw new HttpExc

我有一个控制器,其中我正在处理url的一部分,如果它符合某些条件,我将返回一个视图,如果不符合,我将返回一个
HttpNotFound()

现在我已经设置了一个友好的404页面,如果抛出404,用户将被重定向到该页面,那么为什么HttpNotFound不重定向到此页面


我希望抛出404,然后将页面重定向到web.config中设置的错误页面,但它只显示默认的404页面。我已经检查了其他不存在的URL,这些URL都重定向到正确的错误页面,因为结果表明您要抛出异常:

throw new HttpException(404, "Page Not Found");
这似乎可以处理404,然后将您重定向到正确的页面,而不仅仅是IIS 404页面

只是猜测一下

没有重定向到友好的404页面的原因是IIS/MVC能够处理该请求。然后,在处理请求时,您确定需要向客户端返回404状态代码


就个人而言,我更喜欢返回404状态码和我的PageNotFound视图,类似于StackOverflow使用的这种方法:

这是我在HttpNotFound()之前使用的方法功能实现了,但我发现在一个非常罕见的情况下,我们更改了404页面的ActionName,然后我们必须遍历整个站点并更改所有控制器,正如我现在所做的那样,我们只需要更改web.config