2

HTTPS / SOAPを使用し、デュプレックスである必要があるWCFバインディングを見つける必要があることに気付きました。以前はプログラムでNetTcpBindingを使用していましたが、バインディングはHTTPS/SOAPである必要があります。私はいくつかの調査を行いましたが、独自のCustomBindingを作成しないと不可能のようです。

しかし、私は何をすべきか途方に暮れています(バインディングとセットアップにあまり精通していません)。必要なものに対して正しいバインディング要素を取得できないようです:

    public class CustomHttpsBinding : CustomBinding
    {
        public CustomHttpsBinding() 
        {
        }


        public override BindingElementCollection CreateBindingElements()
        {
            ReliableSessionBindingElement https = new ReliableSessionBindingElement();

            SecurityBindingElement security = SecurityBindingElement.CreateCertificateOverTransportBindingElement();

            CompositeDuplexBindingElement duplex = new CompositeDuplexBindingElement();

            SslStreamSecurityBindingElement ssl = new SslStreamSecurityBindingElement();

            MessageEncodingBindingElement encoding = new GZipMessageEncodingBindingElement((MessageEncodingBindingElement)  new BinaryMessageEncodingBindingElement());

            HttpsTransportBindingElement transport = new HttpsTransportBindingElement();

            return new BindingElementCollection(new BindingElement[] { https, security, duplex, ssl, encoding, transport });

        }

私の契約が完全性と機密性を必要とする認証モードで構成されていると言って、安全なトランスポート要件を超えて石鹸をチェックするとき、それは私に無効な操作例外を与えます。ただし、トランスポートは整合性と機密性を提供できません。

私のHttpsTransportBindingElementが正しくないようですか?わからない。

ありがとう

編集:

ある時点でWSDualHttpBindingを機能させることができましたが、HTTPSは使用できないようです(インターネット上の他のユーザーも、使用すべきではないと言っています)。

4

1 に答える 1

2

HTTP は二重プロトコル (要求/応答) ではありません。そのため、wsDualHttpBinding は 2 つの接続 (各方向に 1 つずつ) を使用します。Silverlight は、隠れてクライアントからのメッセージをポーリングすることにより、HTTP 経由で二重化を実現します。

NetTcpBinding は TCP を使用しますが、これは非常にうまく二重化できます

今年後半に 4.5 がリリースされるまで待つことができる場合、これには WebSocket プロトコルを使用して二重化を行う NetHttpBinding があります。

于 2012-05-18T01:07:27.003 に答える