asp.net-mvc-3 – 返回404错误ASP.NET MVC 3

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 返回404错误ASP.NET MVC 3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经尝试了以下2件事情让一个页面返回404错误
  1. public ActionResult Index()
  2. {
  3. return new HttpStatusCodeResult(404);
  4. }
  5.  
  6. public ActionResult NotFound()
  7. {
  8. return HttpNotFound();
  9. }

但它们都只是渲染一个空白页。如何手动从ASP.NET MVC 3中返回404错误

解决方法

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

你可以得到一个实际的视图显示,而不是通过添加一个customErrors元素到web.config中,当一个特定的状态代码发生时,你可以像处理任何url一样,将用户重定向到一个特定的url。下面是一个步骤:

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

  1. throw new HttpException(404,"NotFound");

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

  1. <configuration>
  2. <system.web>
  3. <customErrors mode="On">
  4. <error statusCode="404" redirect="~/404"/>
  5. </customErrors>
  6. </system.web>
  7. </configuration>

现在在Global.asax中添加一个路由条目,该路由条目将处理网址“404”,它会将请求传递到控制器的操作,该操作会显示404页面的视图。

Global.asax

  1. routes.MapRoute(
  2. "404","404",new { controller = "Commons",action = "HttpStatus404" }
  3. );

CommonsController

  1. public ActionResult HttpStatus404()
  2. {
  3. return View();
  4. }

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

有一个警告与上述方法:根据书“Pro ASP.NET 4在C#2010”(Apress)使用customErrors是过时的,如果你使用IIS 7.相反,你应该使用httpErrors部分。这是一本书的引语:

But although this setting still works with Visual Studio’s built-in test web
server,it’s effectively been replaced by the <httpErrors> section in IIS 7.x.

猜你在找的asp.Net相关文章