首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回404错误ASP.NET MVC 3

返回404错误ASP.NET MVC 3
EN

Stack Overflow用户
提问于 2011-04-12 20:24:32
回答 5查看 41K关注 0票数 30

为了让页面返回404错误,我尝试了以下两种方法:

代码语言:javascript
复制
public ActionResult Index()
{
    return new HttpStatusCodeResult(404);
}

public ActionResult NotFound()
{
    return HttpNotFound();
}

但它们都只是呈现了一个空白页面。如何在ASP.NET MVC3中手动返回404错误?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-08 15:06:55

如果您使用fiddler检查响应,我相信您会发现空白页面实际上返回了404状态代码。问题是没有呈现视图,因此没有显示空白页面。

你可以通过在你的web.config中添加一个customErrors元素来显示一个实际的视图,当某个状态码出现时,它会将用户重定向到一个特定的url,然后你就可以像处理任何url一样来处理它了。下面是一个演示:

首先,在适用的情况下抛出HttpException。实例化异常时,请确保使用其中一个重载,该重载将http状态代码作为参数,如下所示。

代码语言:javascript
复制
throw new HttpException(404, "NotFound");

然后在您的web.config文件中添加一个自定义的错误处理程序,这样您就可以确定在发生上述异常时应该呈现哪个视图。下面是一个例子:

代码语言:javascript
复制
<configuration>
    <system.web>
        <customErrors mode="On">
          <error statusCode="404" redirect="~/404"/>
        </customErrors>
    </system.web>
</configuration>

现在,在您的Global.asax中添加一个路由条目,它将处理url " 404“,它将把请求传递给一个控制器的操作,该操作将显示您的404页面的视图。

Global.asax

代码语言:javascript
复制
routes.MapRoute(
    "404", 
    "404", 
    new { controller = "Commons", action = "HttpStatus404" }
);

CommonsController

代码语言:javascript
复制
public ActionResult HttpStatus404()
{
    return View();
}

剩下的工作就是为上面的操作添加一个视图。

以上方法的一个警告:根据“C# 2010中的专业版IIS4”这本书(Apress),如果你使用的是IIS7,那么customErrors的使用是过时的。相反,你应该使用httpErrors部分。下面是这本书中的一句话:

,但尽管此设置仍然适用于Visual Studio的内置测试web服务器,但它实际上已被IIS7.x.

中的<httpErrors>部分所取代

票数 63
EN

Stack Overflow用户

发布于 2011-04-12 20:27:46

我成功地使用了这个:

代码语言:javascript
复制
return new HttpNotFoundResult();
票数 17
EN

Stack Overflow用户

发布于 2011-04-12 20:51:08

custom error handlerthrow new HttpException(404, "NotFound");对我来说没问题。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5635114

复制
相关文章

相似问题

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