c# - 从 IParameterInspector AfterCall 可以处理的 WCF Rest 服务返回带有消息的 HttpStatus 代码

标签 c# .net wcf .net-4.0 wcf-rest

那么,我在几个服务中得到了一些方法,我用自定义属性对其进行了修饰。

该属性使用 ApplyDispatchBehavior来自 IOperationBehavior附加到方法和 BeforeCallAfterCall来自 IParameterInspector 的方法在服务方法调用前后做一些处理。

一切都很好,很好... 当服务方法需要与消息一起返回 http 状态时,问题就来了。我能找到的唯一方法是抛出 WebFaultException<T> 的方法。传递我们的消息和适当的 http 状态。

问题在于附加属性的 AfterCall永远不会被调用。

它的长短是:

  • 有没有办法回复消息 并在没有的情况下设置http状态 抛出异常?
  • 如果我必须抛出 WebFaultException<T>有没有办法仍然可以使用返回的消息调用我的属性?

最佳答案

好的,经过大量搜索,我找到了 this questionthis 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/

相关文章:

c# - 克隆数据结构的任何声明方式?

c# - GetDirectoryEntry 不返回所有属性

.net - 使用Unity解析各种类型的特定构造函数参数

wcf - WCF 中的 mexTcpBinding - IMetadataExchange 错误

c# - System.Interactive:Memoize() 和 MemoizeAll() 之间的区别?

c# - DI + 通用存储库 + 通用上下文 + 工作单元不起作用,为什么?

c# - "System.Web.UI.MasterPage does not contain a definition..."ASP.NET 错误

.net - 如何将 ObjectStateEntry.OriginalValues 转换为实体?

防火墙背后的 WCF WebService/IIS 托管和配置问题

php - 如何使用对 PHP 页面使用自定义用户名验证的 WCF Web 服务?