Hallo CSharper,
ich hab heut mal ein etwas anderes Problem...
Ich hab ein SOAP-Webservice (mit wsdl), den ich über eine von VS generierte Klasse anspreche. Die Klasse verwendet WCF. Leider benötige ich für die Kommunikation noch ein zusätzlichen HTTP-Header in jedem Request.
Ich hab versucht das exemplarisch für ein Request zu lösen mit:
public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
MessageHeader head = MessageHeader.CreateHeader("SessionToken", "", "abc123";);
OperationContext.Current.OutgoingMessageHeaders.Add(head);
_remoteClient.getStateAsync();
}
}
Leider habe ich dadurch den SOAP Header geändert:
....¬...??Í'..E..¬.?@.?.¢#À¨m²MM=×?.PÕý¢...?tP...ýÙ..POST /development/soap/api HTTP/1.1..Accept: */*..Referer: file:///Applications/Install/CC7A86AB-40DD-42A6-B92C-D66194FD7067/Install/..Content-Length: 311..Accept-Encoding: identity..Content-Type: text/xml; charset=utf-8..SOAPAction: ""..User-Agent: NativeHost..Host: 111.11.11.11..Connection: Keep-Alive..Cache-Control: no-cache....<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Header><SessionToken>123abc</SessionToken></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><getState xmlns="http://cl.url.de/" /></s:Body></s:Envelope>
Hat jemand eine Idee, wie ich an den HTML Header rankomme?
Danke für Eure Hilfe!
Mazo
Hallo,
ich hab eine Lösung gefunden, indem ich nicht den MessageHeader modifiziere, sondern das HttpRequestMessageProperty...
Hier der Code:
public void GetState()
{
using (new System.ServiceModel.OperationContextScope(_remoteClient.InnerChannel))
{
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
request.Headers["SessionToken"] = "abcTokensTunWeh";
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = request;
_remoteClient.getStateAsync();
}
}
Evtl hilft es jemanden 😉
Viele Grüße