2

私は webHttpBinding を使用して wcf サービスを公開し、JSON 形式を返します。次のようなヘッダーでセキュリティ認証を行いたいと考えています。

CustomerServiceClient client = new CustomerServiceClient();

            using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
            {
                MessageHeader header = MessageHeader.CreateHeader("username", "http://tempuri.org", "testuser");

                OperationContext.Current.OutgoingMessageHeaders.Add(header);

            }

エンベロープ バージョン 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' は、メッセージ ヘッダーの追加をサポートしていません。

私は長い間グーグルで検索しましたが、結果はありません。

ありがとう。

4

1 に答える 1

1

MessageHeader クラスの MSDN ドキュメントの最初の行に従って、MessageHeader は SOAP ヘッダーと SOAP サービスを対象としていると思います。

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageheader.aspx

webHttpBinding を使用しているので、SOAP サービスではなく REST サービスを作成していると思います。この場合、System.Net.WebClient クラスを使用する必要があります。

http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

または同様のものを作成し、その Headers プロパティを使用してヘッダーを設定します。明確にするために、SOAPを使用していないため、これはSOAPメッセージヘッダーではなくHTTPヘッダーを設定します。

サンプル コードのようにユーザー名 (パスワードも推測) を本当に設定したい場合は、Headers プロパティを使用して認証ヘッダーを設定するのではなく、WebClient の Credentials プロパティを使用できます。

于 2011-10-11T20:46:24.413 に答える