如何从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 );