2

HTTPS WCF サービスを呼び出したい。このように呼び出している場合:

SmartPayments2SoapClient client = new SmartPayments2SoapClient();

正しく動作しています。

しかし、私のシナリオでは、デフォルトのバインディングを使用したくありません。プログラムで作成する必要がありますが、これでは、私のサービスは安全であり、HTTPS で実行されていることを意味します。

プログラムでバインディングを作成できるコードを提案してください。

カスタム バインディングを使用した App.config は次のとおりです。

<customBinding>
    <binding name="SmartPayments2Soap12">
        <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        </textMessageEncoding>
        <httpsTransport manualAddressing="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" allowCookies="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" maxBufferSize="65536" proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" requireClientCertificate="false" />
    </binding>
</customBinding>

これをC#プログラムに変換したい。私はこれを試しました:

SecurityBindingElement securityElement = SecurityBindingElement.CreateSslNegotiationBindingElement(false);
HttpsTransportBindingElement httpsTransport = new HttpsTransportBindingElement();
httpsTransport.AllowCookies = false;
httpsTransport.BypassProxyOnLocal = false;
httpsTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
httpsTransport.MaxBufferSize = 65536;
httpsTransport.MaxBufferPoolSize = 524288;
httpsTransport.MaxReceivedMessageSize = 65536;
httpsTransport.TransferMode = TransferMode.Buffered;
httpsTransport.UseDefaultWebProxy = true;
httpsTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpsTransport.ManualAddressing = false;
httpsTransport.AllowCookies = false;
httpsTransport.BypassProxyOnLocal = false;
//httpsTransport.DecompressionEnabled = true;
httpsTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
httpsTransport.KeepAliveEnabled = true;
httpsTransport.ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpsTransport.Realm = "";
httpsTransport.TransferMode = TransferMode.Buffered;
httpsTransport.UnsafeConnectionNtlmAuthentication = false;
httpsTransport.UseDefaultWebProxy = true;

CustomBinding binding = new CustomBinding(securityElement, httpsTransport);

EndpointAddress remoteAddress = new EndpointAddress("https://example.com/Payments/Transact2.asmx");

SmartPayments2SoapClient client = new SmartPayments2SoapClient(binding, remoteAddress);
4

0 に答える 0