【发布时间】:2009-10-01 21:41:05
【问题描述】:
我正在尝试将自定义标头添加到访问标准 RESTful 端点的 wcf 客户端。我正在尝试添加某种标头,仅允许我跟踪从一层到下一层的请求。以下是我尝试实现它的方式:
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:信封版本'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' 没有 支持添加消息头。
有人对如何插入这个小钡餐有任何建议吗?
【问题讨论】: