BeforeSendRequest
次のようなメソッドで、カスタム ヘッダーを変更して SOAP メッセージに追加しようとしています。
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
MessageHeader header = MessageHeader.CreateHeader("name", "http://myname", "Oscar");
request.Headers.Add(header);
return null;
}
この時点ですべて問題ありません。ヘッダーは次のように SOAP ヘッダーに追加されます。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId CorrelationId="51efbfdb-2187-45b9-81fc-6a38815d5bed" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">d1351a78-a53a-4d32-ad35-fca6d4262adf</ActivityId>
<name xmlns="http://myname">Oscar</name>
</s:Header>
問題は、ヘッダーにもっと大きなものを追加したいということで、最終結果は次のようになります。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId CorrelationId="51efbfdb-2187-45b9-81fc-6a38815d5bed" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">d1351a78-a53a-4d32-ad35-fca6d4262adf</ActivityId>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:Username xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">username</wsse:Username>
<wsse:Password xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</s:Header>
これを達成する方法はありますか?
PS。みんなお願いします:-)私を批判しないでください、私は次の状況にあります:
このユーザー名とパスワードの認証を追加するときは、以上にする必要がありますhttps
。問題は、私が通信しようとしているこの Java ベースの Web サービスが下にあることです。3 番目のリンクによると、 「それは悪い習慣と見なされるhttp
ため、準拠していないと思います。セキュリティで保護されていない接続を介して資格情報を渡します」が、構成ファイルにヘッダーを追加することで解決しました(私が成功しなかったこと)。
私もこれらのリンクを読んで試してみました。また、リンク 1 と 2 から何かを行うと、Visual Studio で「http ではなく https が期待される」というような例外が発生したため、メソッドMessageInspectors
を使用しようとしています。BeforeSendRequest