2011-01-21 5 views
2

を使用してPowerShellのカスタムSOAPヘッダーを追加します。 New-WebServiceProxy PowerShellコマンドレットによって生成されたプロキシ上のメソッドを呼び出すときにカスタムの発信SOAPメッセージヘッダー私が行うことができますC#では新-たWebServiceProxy

編集: 明確にするために、私は上記のC#で示しPowerShellで同じ呼び出しを行うことができますが、OperationContext.Currentは常にnullです。私はC#でOperationContextScopeを作成することで回避しますが、PowerShellのプロキシが提供していないWebサービスプロキシの内部チャネルが必要です。

+0

明確にするために、上記のC#で示したPowerShellで同じ呼び出しを行うことはできますが、OperationContext.Currentは常にnullです。私はC#でOperationContextScopeを作成することで回避しますが、PowerShellのプロキシが提供していないWebサービスプロキシの内部チャネルが必要です。 – dcstraw

+0

あなたの質問は、この説明を更新してください。 –

+0

FYI私は、必要な情報を渡すために、プロキシのCookieContainerを使用してクッキーを設定することに行きました。ジェイソンの答えから、私の本来の目標は可能かもしれないが、いくらか関わっているようだ。私はそれをやり直す必要があれば、おそらくsvcutilで生成されたWCFプロキシを使うでしょう。 – dcstraw

答えて

4

C#コードでは、WCFのOperationContextクラスが使用されています。 PowerShellのNew-WebServiceProxyコマンドレットはWCFを使用せず、代わりにSystem.Web.Services.Protocols.SoapHttpClientProtocolクラスに基づいてクラスを作成します。

ここで説明するように、カスタムSOAPヘッダを送信するためにSoapHttpClientProtocolのインスタンスを取得するには、あなたは、のSoapExtensionを使用します。 http://blogs.msdn.com/b/kaevans/archive/2007/08/06/programmatically-insert-soapheader-into-soap-request-with-asmx-soapextensions.aspx

ためのSoapExtensionから継承した新しいクラスを作成する必要があるため、ブログの記事の内容を移植PowerShellにはおそらく、Add-TypeコマンドレットのTypeDefinitionパラメーターを使用して埋め込みC#を使用することになります。

+0

説明と提案をいただきありがとうございます。私は、最善の方法は、svcutilにWCFサービスプロキシを作成し、結果のアセンブリをロードすることを呼び出すことだと思っています。しかし、あなたの答えは私が尋ねた質問のための良いもののように思えます。 – dcstraw

+0

通常、[[SoapHeader] '属性を使用してカスタムSOAPヘッダーを送信します。しかし、このシナリオでそれを使用できるかどうかはわかりません。 –

関連する問題