如果在WCF REST调用中出现问题,例如找不到请求的资源,我如何在我的OperationContract方法中使用HTTP响应代码(例如将其设置为HTTP 404)?
有一个WebOperationContext
你可以访问,它有一个OutgoingResponse
类型OutgoingWebResponseContext
的StatusCode
属性,具有可以设置的属性.
WebOperationContext ctx = WebOperationContext.Current; ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
如果您需要返回一个原因体,那么请查看WebFaultException
例如
throw new WebFaultException("Bar wasn't Foo'd", HttpStatusCode.BadRequest );
对于404,WebOperationContext.Current.OutgoingResponse上有一个内置方法,名为SetStatusAsNotFound(字符串消息),它将状态代码设置为404,并通过一次调用设置状态描述.
请注意,还有SetStatusAsCreated(Uri位置),它将状态代码设置为201,并通过一次调用设置位置标头.