public ActionResult Index() { return new HttpStatusCodeResult(404); } public ActionResult NotFound() { return HttpNotFound(); }
但它们都只是渲染一个空白页。如何手动从ASP.NET MVC 3中返回404错误?
解决方法
你可以得到一个实际的视图显示,而不是通过添加一个customErrors元素到web.config中,当一个特定的状态代码发生时,你可以像处理任何url一样,将用户重定向到一个特定的url。下面是一个步骤:
首先抛出HttpException适用。当实例化异常时,请确保使用一个重载,它将http状态代码作为参数,如下所示。
throw new HttpException(404,"NotFound");
然后在web.config文件中添加一个自定义错误处理程序,以便您可以确定在发生上述异常时应呈现的视图。下面是一个例子:
<configuration> <system.web> <customErrors mode="On"> <error statusCode="404" redirect="~/404"/> </customErrors> </system.web> </configuration>
现在在Global.asax中添加一个路由条目,该路由条目将处理网址“404”,它会将请求传递到控制器的操作,该操作会显示404页面的视图。
Global.asax
routes.MapRoute( "404","404",new { controller = "Commons",action = "HttpStatus404" } );
CommonsController
public ActionResult HttpStatus404() { return View(); }
剩下的就是为上面的动作添加一个视图。
有一个警告与上述方法:根据书“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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。