如果在WCF REST调用中出现问题(如找不到请求的资源),我如何在我的OperationContract方法中使用HTTP响应代码(例如,将其设置为类似HTTP 404的方式)?如何从WCF REST方法返回自定义HTTP状态码?
回答
有一个WebOperationContext
,您可以访问,它有一个OutgoingResponse
OutgoingWebResponseContext
类型的属性,它具有可以设置的StatusCode
属性。
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
这是否在WCF数据服务 - 服务操作中工作?我没有运气,似乎我设置的StatusCode被别的东西占据了先机。因此,在所有HTTP POST请求中,无论我将其设置为201等,我都会返回204。 – RyBolt 2010-12-22 15:32:52
在我的情况下不起作用,状态被覆盖。然而,抛出一个`WebFaultException`确实有效。 – 2014-02-04 23:21:07
对于404有一个内置在方法上WebOperationContext.Current.OutgoingResponse称为SetStatusAsNotFound(字符串消息),将设置状态码404,并用一个呼叫的状态的说明。
请注意,还有,SetStatusAsCreated(Uri位置)将设置状态代码为201和位置标头与一次调用。
比接受的答案中显示的方法优先吗? – crush 2014-10-09 15:33:42
如果需要退货的理由身体,然后看看WebFaultException
例如
throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest);
我喜欢这比接受的更好,因为我们没有使用静态的WebOperationContext.Current – 2011-12-06 20:43:41
请记住,这是唯一有效的,因为famework 4 http://msdn.microsoft.com/en-us/library/dd989924.aspx – sebagomez 2012-05-16 18:10:53
如果您希望看到标题中的状态描述,REST方法应该确保返回从Catch()部分中删除,如下所示:
catch (ArgumentException ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
return null;
}
这对我来说并不适用于WCF数据服务。相反,您可以在Data Services的情况下使用DataServiceException。找到以下帖子有用。 http://social.msdn.microsoft.com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());
- 1. 如何从WCF REST方法创建自定义HTTP状态码?
- 2. 如何使用WCF REST读取自定义HTTP状态码?
- 3. 使用REST API返回HTTP状态码
- 4. Rest API返回HTTP状态代码
- 5. 在java rest api上返回自定义状态和代码
- 6. Spring MVC返回自定义HTTP状态码(无错误)
- 7. 如何返回的自定义HTTP状态代码Zend框架2
- 8. REST的4xx http状态码
- 9. ASP.NET的404自定义错误页面返回302状态为http状态
- 10. 为REST服务异步返回http状态码202?
- 11. REST API错误返回,是否包含HTTP状态代码
- 12. 如何调用从Silverlight返回自定义对象的WCF方法
- 13. Django:自定义404处理程序返回404状态代码
- 14. REST API设计的GET方法中的HTTP状态代码
- 15. WCF自定义身份验证 - HTTP状态401:未授权
- 16. Asp Classic返回特定的http状态代码
- 17. MVC 3 + REST返回自定义http错误?
- 18. 有没有办法从WCF REST方法返回不同类型?
- 19. hapijs自定义http状态消息
- 20. MVC3自定义错误和HTTP状态
- 21. 返回GET请求的特定HTTP状态代码
- 22. API开发:何时返回一个不良请求HTTP状态代码(REST)
- 23. 无法从WCF数据服务返回自定义类
- 24. 如何在不返回对象,IActionResult等的情况下返回ASP.NET Core中的自定义HTTP状态/消息?
- 25. 自定义返回类型的方法?
- 26. 如何在Node中返回HTTP错误状态码?
- 27. 如何从用户定义方法返回到委托方法
- 28. 如何从Node.JS/Express.JS post()方法返回AWS错误状态?
- 29. REST:映射404 HTTP状态代码
- 30. 给定无效ID时应该返回什么HTTP状态码?
确定所有的答案,这个假设控制使它成为你的服务实现。如果他们通过一些完全无效的uri会怎么样?你认为如何为你的服务提供所有意想不到的点击404? – 2012-07-18 22:56:56