<basicHttpBinding>

ASMX ベースの Web サービスやクライアント、および WS-I Basic Profile 1.1 に準拠するその他のサービスとの通信が可能なエンドポイントを構成および公開するために、Windows Communication Foundation (WCF) サービスが使用できるバインドを表します。

configuration
  system.serviceModel
    <bindings>
      basicHttpBinding>

構文

<basicHttpBinding>
  <binding allowCookies="Boolean"
           bypassProxyOnLocal="Boolean"
           closeTimeout="TimeSpan"
           hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
           maxBufferPoolSize="Integer"
           maxBufferSize="Integer"
           maxReceivedMessageSize="Integer"
           messageEncoding="Text/Mtom"
           name="String"
           openTimeout="TimeSpan"
           proxyAddress="URI"
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan"
           textEncoding="UnicodeFffeTextEncoding/Utf16TextEncoding/Utf8TextEncoding"
           transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse"
           useDefaultWebProxy="Boolean">
    <security mode="None/Transport/Message/TransportWithMessageCredential/TransportCredentialOnly">
      <transport clientCredentialType="None/Basic/Digest/Ntlm/Windows/Certificate"
                 proxyCredentialType="None/Basic/Digest/Ntlm/Windows"
                 realm="String" />
      <message algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
               clientCredentialType="UserName/Certificate" />
    </security>
    <readerQuotas maxArrayLength="Integer"
                  maxBytesPerRead="Integer"
                  maxDepth="Integer"
                  maxNameTableCharCount="Integer"
                  maxStringContentLength="Integer" />
  </binding>
</basicHttpBinding>

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性 説明
allowCookies クライアントがクッキーを受け入れて、それらを今後の要求に反映させるかどうかを指定するブール値です。 既定値は、false です。

クッキーを使用する ASMX Web サービスと対話する場合にこのプロパティを使用できます。 この方法で、サーバーから返されるクッキーを、それ以降のサービスに対するすべてのクライアント要求に自動的にコピーできます。
bypassProxyOnLocal ローカル アドレスでプロキシ サーバーをバイパスするかどうかを示すブール値。 既定では、 falseです。

インターネット リソースは、ローカル アドレスを持つ場合ローカルです。 ローカル アドレスは、同じコンピューター、ローカル LAN、またはイントラネット上にあり、http://webserver/http://localhost/ など、ピリオド (.) を含まない URI により構文的に識別されるアドレスです。

この属性の設定は、BasicHttpBinding で構成されたエンドポイントがローカル リソースへのアクセス時にプロキシ サーバーを使用するかどうかを示します。 この属性が true の場合、ローカル インターネット リソースへの要求はプロキシ サーバーを使用しません。 この属性を true に設定した場合で、同じコンピューター上のサービスと対話するクライアントがプロキシを経由するときは、(localhost ではなく) ホスト名を使用します。

この属性が false の場合、すべてのインターネット要求はプロキシ サーバー経由で行われます。
closeTimeout クローズ操作が完了するまでの期間を指定する TimeSpan 値。 この値は必ず Zero 以上である必要があります。 既定値は 00:01:00 です。
hostNameComparisonMode URI の解析に使用する HTTP ホスト名比較モードを指定します。 この属性は HostNameComparisonMode 型で、URI が一致したときにサービスへのアクセスにホスト名を使用するかどうかを指定します。 既定値は StrongWildcard で、一致しているホスト名を無視します。
maxBufferPoolSize チャネルからメッセージを受け取るメッセージ バッファーのマネージャーが使用するために割り当てられる、最大メモリ量を指定する整数値。 既定値は 524288 (0x80000) バイトです。

バッファー マネージャーは、バッファー プールを使用することで、バッファーの使用コストを最小化します。 バッファーは、チャネルから出てくるメッセージをサービスが処理するときに必要です。 メッセージの読み込み処理に十分なメモリがバッファー プールにない場合、バッファー マネージャーは、CLR ヒープから追加のメモリを割り当てる必要があります。これにより、ガベージ コレクションのオーバーヘッドが増加します。 CLR ガベージ ヒープから多大な割り当てが行われることは、バッファー プール サイズが小さすぎること、およびこの属性で指定される制限を緩めて割り当てを増やすとパフォーマンスが向上する可能性があることを示します。
maxBufferSize このバインディングで構成されるエンドポイントのメッセージが処理されるときのメッセージを格納するバッファーの最大サイズを指定する整数値 (バイト単位)。 既定値は 65,536 バイトです。
maxReceivedMessageSize このバインディングで構成されるチャネルが受信可能なメッセージの最大メッセージ サイズ (ヘッダーを含む) をバイト単位で定義する正の整数。 受信側のメッセージが大きすぎると、送信側は SOAP エラーを受け取ります。 メッセージは受信者によってドロップされ、トレース ログにこのイベントのエントリが作成されます。 既定値は 65,536 バイトです。
messageEncoding SOAP メッセージのエンコードに使用されるエンコーダーを定義します。 有効な値は次のとおりです。

- Text: テキスト メッセージ エンコーダーを使用します。
- Mtom: Message Transmission Organization Mechanism 1.0 (MTOM) エンコーダーを使用します。

既定値は Text です。 この属性は WSMessageEncoding 型です。
name バインディングの構成名を格納する文字列です。 この値は、同じ型のバインディング間で一意にする必要があります。 NET Framework 4 以降では、バインディングおよび動作に名前を付ける必要はありません。 既定の構成と、名前のないバインディングと動作については、「簡略化された構成」と「WCF サービスの簡略化された構成」を参照してください。
openTimeout 実行中の操作が完了するまでの時間間隔を指定する TimeSpan 値です。 この値は必ず Zero 以上である必要があります。 既定値は 00:01:00 です。
proxyAddress HTTP プロキシのアドレスを格納する URI。 useSystemWebProxytrue に設定されている場合、この設定は null である必要があります。 既定では、 nullです。
receiveTimeout 受信操作が完了するまでの時間間隔を指定する TimeSpan 値です。 この値は必ず Zero 以上である必要があります。 既定値は 00:10:00 です。
sendTimeout 送信操作が完了するまでの時間間隔を指定する TimeSpan 値です。 この値は必ず Zero 以上である必要があります。 既定値は 00:01:00 です。
textEncoding バインディングでメッセージの発行に使用される文字セット エンコーディングを設定します。 有効な値は次のとおりです。

- BigEndianUnicode: Unicode BigEndian エンコード。
- Unicode: 16 ビット エンコード。
- UTF8: 8 ビット エンコード。

既定値は UTF8 です。 この属性は Encoding 型です。
transferMode 要求または応答に対してメッセージがバッファーされるか、ストリーム配信されるかを指定する有効な TransferMode 値。
useDefaultWebProxy 使用できる場合にシステムの自動設定 HTTP プロキシを使用するかどうかを指定するブール値。 既定では、 trueです。

子要素

要素 説明
<security> バインディングのセキュリティ設定を定義します。 この要素は BasicHttpSecurityElement 型です。
<readerQuotas> このバインドを使用して設定されるエンドポイントにより処理可能な、SOAP メッセージの複雑さに対する制約を定義します。 この要素は XmlDictionaryReaderQuotasElement 型です。

親要素

要素 説明
<bindings> この要素には、標準バインディングおよびカスタム バインドのコレクションが保持されます。

解説

BasicHttpBinding では、SOAP 1.1 メッセージを送信するために、HTTP をトランスポートとして使用します。 サービスは、ASMX クライアントが消費するエンドポイントなど、WS-I BP 1.1 に準拠するエンドポイントを開示するためにこのバインディングを使用できます。 同様に、クライアントは BasicHttpBinding を使用して、ASMX Web サービスや BasicHttpBinding で構成されるサービスなどの WS-I BP 1.1 に準じるエンドポイントを公開するサービスと通信できます。

既定ではセキュリティは無効になります。ただし、<security> 子要素のモード属性に None 以外の値を設定してセキュリティを追加できます。 サービスは、"Text" メッセージ エンコードおよび UTF-8 テキスト エンコードを既定で使用します。

例 1

第 1 世代と第 2 世代の Web サービスで HTTP 通信と最大限の相互運用性を実現する、BasicHttpBinding の使用例を次に示します。 バインディングは、クライアントとサービスの構成ファイルに指定されます。 バインディングの種類は、binding 要素の <endpoint> 属性を使用して指定します。 基本的なバインディングを構成してその設定の一部を変更する場合は、バインド構成を定義する必要があります。 エンドポイントは、bindingConfiguration 要素の <endpoint> 属性を使用して、名前でバインディング構成を参照する必要があります。次のサービスの構成コードを参照してください。

<system.serviceModel>
  <services>
    <service type="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <endpoint address=""
                binding="basicHttpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
  </services>
  <bindings>
    <basicHttpBinding>
      <binding name="Binding1"
               hostNameComparisonMode="StrongWildcard"
               receiveTimeout="00:10:00"
               sendTimeout="00:10:00"
               openTimeout="00:10:00"
               closeTimeout="00:10:00"
               maxReceivedMessageSize="65536"
               maxBufferSize="65536"
               maxBufferPoolSize="524288"
               transferMode="Buffered"
               messageEncoding="Text"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true">
        <security mode="None" />
      </binding>
    </basicHttpBinding>
  </bindings>
</system.serviceModel>

例 2

NET Framework 4 以降では、バインディングおよび動作に名前を付ける必要はありません。 前の例の機能を実行するには、エンドポイント アドレスの bindingConfiguration とバインディングの名前を削除します。

<system.serviceModel>
  <services>
    <service type="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <endpoint address=""
                binding="basicHttpBinding"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
  </services>
  <bindings>
    <basicHttpBinding>
      <binding hostNameComparisonMode="StrongWildcard"
               receiveTimeout="00:10:00"
               sendTimeout="00:10:00"
               openTimeout="00:10:00"
               closeTimeout="00:10:00"
               maxReceivedMessageSize="65536"
               maxBufferSize="65536"
               maxBufferPoolSize="524288"
               transferMode="Buffered"
               messageEncoding="Text"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true">
        <security mode="None" />
      </binding>
    </basicHttpBinding>
  </bindings>
</system.serviceModel>

既定の構成と、名前のないバインディングと動作については、「簡略化された構成」と「WCF サービスの簡略化された構成」を参照してください。

関連項目