如何从WCF REST方法返回自定义HTTP状态代码?

时间:2020-03-06 14:47:24  来源:igfitidea点击:

如果在WCF REST调用中出了点问题,例如找不到请求的资源,我该如何在OperationContract方法中使用HTTP响应代码(例如,将其设置为HTTP 404之类的东西)?

解决方案

我们可以访问一个WebOperationContext,它具有OutgoingWebResponseContext类型的OutgoingResponse属性,该属性可以设置StatusCode属性。

WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;

对于404,在WebOperationContext.Current.OutgoingResponse上有一个内置方法,称为SetStatusAsNotFound(字符串消息),该方法将状态代码设置为404,并通过一次调用将状态描述设置为404.

请注意,还有一个SetStatusAsCreated(Uri location),它将通过一次调用将状态代码设置为201和位置标头。

如果我们需要返回原因正文,请查看WebFaultException

例如

throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest );