Fügen Sie eine Kopfzeile ein REST WCF-Anforderung - EnvelopeNone unterstützt das hinzufügen von Kopfzeilen Ausnahme
Ich versuche, fügen Sie einen benutzerdefinierten header mit einem wcf-client-schlagen Sie eine standard -, Rest-Endpunkt. Ich werde versuchen, fügen Sie etwas Art von header, nur erlauben Sie mir, trace-Anfragen von einer Ebene auf die nächste. Hier ist, wie ich versucht habe zu implementieren:
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); }
}
}
Ich dann konfigurieren Sie den client erfolgreich, aber wenn diese läuft, bekomme ich die folgende exception:
System.InvalidOperationException: Umschlag-Version 'EnvelopeNone
(http://schemas.microsoft.com/ws/2005/05/envelope/none)' nicht
Unterstützung für das hinzufügen von Kopfzeilen.
Jemand irgendwelche Vorschläge auf, wie legen Sie dieses kleine barium-Mahlzeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nehme an, du meinst den HTTP-header und nicht in einem SOAP-header? Wenn dem so ist, MessageHeader hat nichts mit diesem zu tun.
Probieren Sie etwas wie dieses:
Im Allgemeinen, die WCF-REST-Unterstützung ist nicht wirklich optimiert auf der client-Seite (es erstellt wurde, hauptsächlich, um Leuten zu erlauben erstellen REST-services). Viel besser für client-side-REST-support, check-out-HttpClient in der WCF REST Starter Kit.
In der Methode BeforeSendReply müssen Sie als Antwort bekommen:
Wenn Sie die Instanz von Antwort, als Sie können ganz einfach fügen Sie alle header, die Sie wollen:
Ich weiß, das ist spät, aber ich rannte über diesem post so entschieden, füllen diese auf, falls ich jemals brauchen, um denken Sie daran, diese wieder. Dieser arbeitete für mich:
Erstellen Sie die Nachricht, Inspektor:
Schreiben das Verhalten:
Fügen Sie es zu Ihrem Endpunkt: