那么,我在几个服务中得到了一些方法,我用自定义属性对其进行了修饰。
该属性使用 ApplyDispatchBehavior
来自 IOperationBehavior
附加到方法和 BeforeCall
和 AfterCall
来自 IParameterInspector
的方法在服务方法调用前后做一些处理。
一切都很好,很好...
当服务方法需要与消息一起返回 http 状态时,问题就来了。我能找到的唯一方法是抛出 WebFaultException<T>
的方法。传递我们的消息和适当的 http 状态。
问题在于附加属性的 AfterCall
永远不会被调用。
它的长短是:
- 有没有办法回复消息 并在没有的情况下设置http状态 抛出异常?
- 如果我必须抛出
WebFaultException<T>
有没有办法仍然可以使用返回的消息调用我的属性?
最佳答案
好的,经过大量搜索,我找到了 this question和 this answer
总结一下:调用一个像这样的小方法:
public void SetResponseHttpStatus(HttpStatusCode statusCode)
{
var context = WebOperationContext.Current;
context.OutgoingResponse.StatusCode = statusCode;
}
...在每个不是普通 200 响应的返回之前应该这样做。
关于c# - 从 IParameterInspector AfterCall 可以处理的 WCF Rest 服务返回带有消息的 HttpStatus 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3913615/