Asp.net mvc 3 MVC 3&x2B;REST返回自定义http错误?

Asp.net mvc 3 MVC 3&x2B;REST返回自定义http错误?,asp.net-mvc-3,error-handling,Asp.net Mvc 3,Error Handling,在我的应用程序中,我试图获取它,以便在进行RESTAPI调用时,如果出现错误,返回正确的状态代码,则在响应体中返回Json或Xml 所以400:{'ErrorCode':'400','Reason':'你做错了什么。} 或者400:400你做错了什么 然而,我似乎找不到如何设置状态和身体来实现这一点。使用fiddler检查传回的内容,第四,我发现如果我返回一个正常的ActionResult,那么我可以返回正文消息ok,但状态是200。如果我使用HttpException,那么我可以设置状态代码,

在我的应用程序中,我试图获取它,以便在进行RESTAPI调用时,如果出现错误,返回正确的状态代码,则在响应体中返回Json或Xml

所以
400:{'ErrorCode':'400','Reason':'你做错了什么。}

或者
400:400你做错了什么

然而,我似乎找不到如何设置状态和身体来实现这一点。使用fiddler检查传回的内容,第四,我发现如果我返回一个正常的
ActionResult
,那么我可以返回正文消息ok,但状态是200。如果我使用
HttpException
,那么我可以设置状态代码,但正文消息将作为一个大型html文档返回。我尝试过使用
HttpStatusCodeResult
,但似乎失败了,返回了302


我有点困惑。

看看MVC4beta,有一个叫做Web API的新功能可以帮助你解决这个问题。

试试
Response.StatusCode=(int)HttpStatusCode.BadRequest在您的操作方法中。查看developq上的这篇文章,获得一个简短的教程:

Web API可以通过各种方式处理此问题,但是如果您想坚持使用ASP.NET MVC,请使用以下代码:

 Response.StatusCode = 500;
 Response.TrySkipIisCustomErrors = true;
 return Content("Error description goes here.", "text/plain");

恐怕在MVC4变成alpha之前无法使用。@David我不知道这是否是解决方案。但是MVC4是测试版@末日骑士是的,抱歉,我的意思是直到它得到正式发布日期。不知道我为什么写alpha:sPretty,当然抛出的异常会传递回Rest。除非你在什么地方禁用了它