双方向サービス コントラクト以外に適した、安全で信頼のおける相互操作可能なバインディングを定義します。バインディングは、信頼のための WS-ReliableMessaging、およびメッセージのセキュリティと認証のための WS-Security を実装します。トランスポートは HTTP、メッセージ エンコーディングは Text/XML エンコーディングです。
<wsHttpBinding> <binding allowCookies="Boolean" bypassProxyOnLocal="Boolean" closeTimeout="TimeSpan" hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard" maxBufferPoolSize="integer" maxReceivedMessageSize="Integer" messageEncoding="Text/Mtom" name="string" openTimeout="TimeSpan" proxyAddress="URI" receiveTimeout="TimeSpan" sendTimeout="TimeSpan" textEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding" transactionFlow="Boolean" useDefaultWebProxy="Boolean"> <reliableSession ordered="Boolean" inactivityTimeout="TimeSpan" enabled="Boolean" /> <security mode="Message/None/Transport/TransportWithCredential"> <transport clientCredentialType="Basic/Certificate/Digest/None/Ntlm/Windows" proxyCredentialType="Basic/Digest/None/Ntlm/Windows" realm="string" /> <message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" clientCredentialType="Certificate/IssuedToken/None/UserName/Windows" establishSecurityContext="Boolean" negotiateServiceCredential="Boolean" /> </security> <readerQuotas maxDepth="integer" maxStringContentLength="integer" maxByteArrayContentLength="integer" maxBytesPerRead="integer" maxNameTableCharCount="integer" /> </binding> </wsHttpBinding>
allowCookies
クライアントが Cookie を受け入れて、それらを今後の要求に反映させるかどうかを示すブール値。既定値は false です。
Cookie を使用する ASMX Web サービスと対話する場合に、このプロパティを使用できます。この方法で、サーバーから返される Cookie を、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。
bypassProxyOnLocal
ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。既定値は false です。
closeTimeout
クローズ操作が完了するまでの期間を指定する TimeSpan 値。この値は必ず Zero 以上である必要があります。既定値は 00:01:00 です。
hostnameComparisonMode
URI の解析に使用する HTTP ホスト名比較モードを指定します。この属性は HostnameComparisonMode 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。既定値は StrongWildcard で、一致しているホスト名を無視します。
maxBufferPoolSize
このバインディングに使用するバッファ プール サイズの上限を指定する整数。既定は 524,288 バイト (512 * 1024) です。Windows Communication Foundation (WCF) では、多くの部分でバッファを使用します。使用するたびに毎回バッファを作成および破棄すると負荷が高くなります。バッファのガベージ コレクションも同様です。バッファ プールを使用すると、バッファをプールから取得して使用し、作業が終わったらプールに戻すことができます。これで、バッファの作成と破棄のオーバーヘッドを回避できます。
maxReceivedMessageSize
チャネルで受信可能な最大メッセージ サイズ (ヘッダーを含む) をバイト単位で指定する正の整数が、このバインディングを使用して設定されました。この制限を超えるメッセージの送信者が、SOAP エラーを受信します。受信者がメッセージをドロップし、トレース ログにそのイベントのエントリを作成します。既定値は 65536 です。
messageEncoding
メッセージのエンコードに使用されるエンコーダを定義します。有効な値は次のとおりです。
この属性は WSMessageEncoding 型です。
name
バインディングの設定名を格納する文字列です。この値は、バインディングの ID として使用されるため、一意にする必要があります。
openTimeout
実行中の操作が完了するまでの時間間隔を指定する TimeSpan 値です。この値は必ず Zero 以上である必要があります。既定値は 00:01:00 です。
proxyAddress
HTTP プロキシのアドレスを指定する URI。useSystemWebProxy が true の場合、この設定を null にする必要があります。既定値は null です。
receiveTimeout
受信操作が完了するまでの時間間隔を指定する TimeSpan 値です。この値は必ず Zero 以上である必要があります。既定値は 00:01:00 です。
sendTimeout
送信操作が完了するまでの時間間隔を指定する TimeSpan 値です。この値は必ず Zero 以上である必要があります。既定値は 00:01:00 です。
textEncoding
バインディングでメッセージの発行に使用される文字セット エンコーディングを指定します。有効な値は次のとおりです。
既定値は Utf8TextEncoding です。
この属性は Encoding 型です。
transactionFlow
バインディングが WS-Transactions のフローをサポートするかどうかを指定するブール値です。既定値は false です。
useDefaultWebProxy
システムの自動設定 HTTP プロキシを使用するかどうかを示すブール値。既定値は true です。
<wsHttpBinding> の <security>
バインディングのセキュリティ設定を定義します。この要素は WSHttpSecurityElement 型です。
<readerQuotas>
このバインディングを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。この要素は XmlDictionaryReaderQuotasElement 型です。
<reliableSession> 要素
チャネルのエンドポイント間に信頼できるセッションを確立するかどうかを指定します。
<bindings>
この要素には、標準バインディングおよびカスタム バインディングのコレクションが保持されます。各エントリは、それぞれの name によって識別されます。サービスは、name を使用してバインディングをリンクすることにより、バインディングを使用します。
WSHttpBinding は BasicHttpBinding に似ていますが、より多くの Web サービス機能を提供します。BasicHttpBinding と同じように HTTP トランスポートを使用し、メッセージ セキュリティを提供します。さらに、トランザクション、信頼できるメッセージング、および WS-Addressing も提供します。これらは、既定で有効化になっているか、または単一の制御設定で使用できるようになります。
<configuration> <system.ServiceModel> <bindings> <wsHttpBinding> <binding name="test" closeTimeout="00:00:10" openTimeout="00:00:20" receiveTimeout="00:00:30" sendTimeout="00:00:40" bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="WeakWildcard" maxMessageSize="1000" messageEncoding="Mtom" proxyAddress="http://foo/bar" textEncoding="utf-16" useDefaultWebProxy="false"> <reliableSession ordered="false" inactivityTimeout="00:02:00" enabled="true" /> <security mode="Transport"> <transport clientCredentialType="Digest" proxyCredentialType="None" realm="someRealm" /> <message clientCredentialType="Windows" negotiateServiceCredential="false" algorithmSuite="Aes128" defaultProtectionLevel="None" /> </security> </binding> </wsHttpBinding> </bindings> </system.ServiceModel> </configuration>