Hinzufügen von benutzerdefinierten SOAP-header in der PowerShell mit New-WebServiceProxy
In C# kann ich Folgendes tun:
var header = MessageHeader.CreateHeader("MyHeader", "http://mynamespace", "Header value");
OperationContext.Current.OutgoingMessageHeaders.Add(header);
Fügt hinzu, dass die folgende SOAP-Nachricht:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<MyHeader xmlns="http://mynamespace">Header value</MyHeader>
....
</s:Header>
...
Wie kann ich in ähnlicher Weise fügen Sie eine benutzerdefinierte ausgehende SOAP-message-header beim Aufruf von Methoden auf einen proxy generiert, indem die New-WebServiceProxy PowerShell-commandlet?
Bearbeiten:
Zu klären, kann ich die gleichen Anrufe in PowerShell, die ich in der C# - oben, aber OperationContext.Current ist immer null. Ich bekomme etwa, dass in C# durch die Schaffung einer OperationContextScope, aber erfordert, dass der innere Kanal der web-service-proxy, die PowerShell-proxy scheint nicht zur Verfügung zu stellen.
- Zu klären, kann ich die gleichen Anrufe in PowerShell, die ich in der C# - oben, aber OperationContext.Current ist immer null. Ich bekomme etwa, dass in C# durch die Schaffung einer OperationContextScope, aber erfordert, dass der innere Kanal der web-service-proxy, die PowerShell-proxy scheint es nicht zu geben.
- bitte aktualisieren Sie Ihre Frage mit dieser Klarstellung.
- FYI ich landete mit dem setzen von cookies mithilfe der proxy-CookieContainer übergeben werden, die Informationen, die ich brauchte. Von Jason ' s Antwort sieht es aus wie mein ursprüngliches Ziel kann sein, möglich, aber etwas umständlich. Wenn ich hatte, es zu tun, immer wieder, ich würde wahrscheinlich gehen mit einem WCF-proxy generiert, mit svcutil.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem C# - code ist mit der OperationContext Klasse von WCF. PowerShell New-WebServiceProxy-cmdlet nicht verwenden, WCF, sondern schafft Klassen, basiert auf dem System.Web.Services.- Protokolle.SoapHttpClientProtocol-Klasse.
Um eine Instanz von SoapHttpClientProtocol zum senden von benutzerdefinierten SOAP-Header, die Sie verwenden, SOAP, wie hier beschrieben:
http://blogs.msdn.com/b/kaevans/archive/2007/08/06/programmatically-insert-soapheader-into-soap-request-with-asmx-soapextensions.aspx
Aufgrund der Notwendigkeit zum erstellen einer neuen Klasse Erben von SOAP-Erweiterung, die Portierung der Inhalt der blog-post zu PowerShell wird wahrscheinlich beinhalten die Verwendung von embedded-C# über das cmdlet " Add-Type s TypeDefinition-parameter.
[SoapHeader]
Attribut zum senden von benutzerdefinierten SOAP-Header. Ich weiß nicht, ob das verwendet werden kann in diesem Szenario jedoch.