wcf - 向REST WCF请求添加 header -EnvelopeNone不支持添加消息 header 异常

标签 wcf rest header

我试图将自定义 header 添加到点击标准RESTful端点的wcf客户端。我正在尝试添加某种 header ,该 header 将仅允许我跟踪从一层到下一层的请求。这是我尝试实现的方法:

public class DynatracePurePathHeaderAppender : IClientMessageInspector, IEndpointBehavior
 {
  object IClientMessageInspector.BeforeSendRequest(ref Message request, IClientChannel channel)
  {
   var dynaHeader = MessageHeader.CreateHeader("Action", "ns.yellowbook.jeff", "dynatrace",false);
   request.Headers.Add(dynaHeader);
   return null;
  }

  void IClientMessageInspector.AfterReceiveReply(ref Message reply, object correlationState)
  {
   return;
  }

  public void Validate(ServiceEndpoint endpoint){}

  public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters){}

  public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher){}

  public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
  {
   clientRuntime.MessageInspectors.Add(this);
  }
 }

public class DynatracePurePathHeaderAppenderElement : BehaviorExtensionElement
 {
  protected override object CreateBehavior()
  {
   return new DynatracePurePathHeaderAppender();
  }

  public override Type BehaviorType
  {
   get { return typeof(DynatracePurePathHeaderAppender); }
  }
 }

然后,我成功配置了客户端,但是在运行时,出现以下异常:

System.InvalidOperationException: Envelope Version 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' does not support adding Message Headers.



有人对如何添加这种少量钡餐有任何建议吗?

最佳答案

我假设您的意思是HTTP header ,而不是SOAP header ?如果是这样,MessageHeader与此无关。

尝试这样的事情:

HttpRequestMessageProperty hrmp = new HttpRequestMessageProperty();
//Set hrmp.Headers, then:
request.Properties.Add(HttpRequestMessageProperty.Name, hrmp);

通常,WCF REST支持并没有在客户端上进行真正的优化(创建它主要是为了允许人们创建REST服务)。为了获得更好的客户端REST支持,请查看WCF REST入门工具包中的HttpClient。

关于wcf - 向REST WCF请求添加 header -EnvelopeNone不支持添加消息 header 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506670/

相关文章:

wcf - 是否需要 WCF DataContract 命名空间

javascript - 将 JSON 对象数组映射到字符串

c# - 如何将数据绑定(bind)到 xamarin Android 中的 ListView ?

header - PE 最多可以有多少个部分?

c# - 当所有设置均为最大值时,已超出传入邮件的最大邮件大小配额 (65536)

c# - 接收 eBay SOAP 通知消息

wcf - Remoting 和 Wcf 之间的 Http 请求数差异

php - Laravel 响应转换不起作用

C++ 链表类 -> 头文件

c++ - 为什么 .hpp 文件会包含在 .h 文件中?