<basicHttpBinding>

Representa uma associação que um serviço do WCF (Windows Communication Foundation) pode usar para configurar e expor pontos de extremidade capazes de se comunicar com clientes e serviços Web baseados em ASMX e outros serviços que estejam em conformidade com o WS-I Basic Profile 1.1.

<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>

Syntax

<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>

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Atributos

Atributo Descrição
allowCookies Um valor booliano que indica se o cliente aceita cookies e os propaga em solicitações futuras. O padrão é false.

Você pode usar essa propriedade ao interagir com os serviços Web ASMX que usam cookies. Dessa forma, você pode ter certeza de que os cookies retornados do servidor são copiados automaticamente para todas as solicitações futuras do cliente para esse serviço.
bypassProxyOnLocal Um valor booliano que indica se o servidor proxy deve ser ignorado para endereços locais. O padrão é false.

Um recurso da Internet será local se tiver um endereço local. Um endereço local é aquele que está no mesmo computador, na LAN local ou na intranet e é identificado, sintaticamente, pela falta de um ponto (.) como nos URIs http://webserver/ e http://localhost/.

A definição desse atributo determina se os pontos de extremidade configurados com a BasicHttpBinding usam o servidor proxy ao acessar recursos locais. Se esse atributo for true, as solicitações aos recursos locais da Internet não usarão o servidor proxy. Use o nome do host (em vez do localhost) se quiser que os clientes passem por um proxy ao se comunicarem com serviços no mesmo computador quando esse atributo estiver definido como true.

Quando esse atributo for false, todas as solicitações da Internet serão feitas por meio do servidor proxy.
closeTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de fechamento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
hostNameComparisonMode Especifica o modo de comparação de nome do host HTTP usado para analisar URIs. Esse atributo é do tipo HostNameComparisonMode, o que indica se o nome do host é usado para acessar o serviço ao fazer correspondência no URI. O valor padrão é StrongWildcard, o que ignora o nome do host na correspondência.
maxBufferPoolSize Um valor inteiro que especifica a quantidade máxima de memória alocada para uso pelo gerenciador dos buffers de mensagens que recebem mensagens do canal. O valor padrão é 524.288 (0x80000) bytes.

O Gerenciador de Buffers minimiza o custo do uso de buffers usando um pool de buffers. Os buffers são necessários para processar mensagens pelo serviço quando saem do canal. Se não houver memória suficiente no pool de buffers para processar a carga da mensagem, o Gerenciador de Buffers precisará alocar memória adicional do heap CLR, o que aumenta a sobrecarga da coleta de lixo. A alocação extensiva do heap de lixo CLR é uma indicação de que o tamanho do pool de buffers é muito pequeno e que o desempenho pode ser aprimorado com uma alocação maior aumentando o limite especificado por esse atributo.
maxBufferSize Um valor inteiro que especifica o tamanho máximo, em bytes, de um buffer que armazena mensagens enquanto são processadas para um ponto de extremidade configurado com essa associação. O valor padrão é 65.536 bytes.
maxReceivedMessageSize Um inteiro positivo que define o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, para uma mensagem que pode ser recebida em um canal configurado com essa associação. O remetente receberá uma falha SOAP se a mensagem for muito grande para o destinatário. O destinatário remove a mensagem e cria uma entrada do evento no log de rastreamento. O padrão é de 65.536 bytes.
messageEncoding Define o codificador usado para codificar a mensagem SOAP. Os valores válidos incluem os seguintes:

– Texto: use um codificador de mensagens de texto.
– Mtom: use um codificador do MTOM (Message Transmission Organization Mechanism) 1.0.

O padrão é texto. Esse atributo é do tipo WSMessageEncoding.
name Uma cadeia de caracteres que contém o nome de configuração da associação. Esse valor deve ser exclusivo entre as associações do mesmo tipo. Do .NET Framework 4 em diante, associações e comportamentos não precisam ter um nome. Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.
openTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de abertura. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
proxyAddress Um URI que contém o endereço do proxy HTTP. Se useSystemWebProxy estiver definido como true, essa configuração precisará ser null. O padrão é null.
receiveTimeout Um valor TimeSpan que especifica o intervalo de tempo para a conclusão de uma operação de recebimento. Esse valor deve ser igual ou superior a Zero. O padrão é 00:10:00.
sendTimeout Um valor TimeSpan que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Esse valor deve ser igual ou superior a Zero. O padrão é 00:01:00.
textEncoding Define a codificação de conjunto de caracteres a ser usada para emitir mensagens na associação. Os valores válidos incluem os seguintes:

− BigEndianUnicode: codificação Unicode BigEndian.
– Unicode: codificação de 16 bits.
− UTF8: codificação de 8 bits

O padrão é UTF8. Esse atributo é do tipo Encoding.
transferMode Um valor TransferMode válido que especifica se as mensagens são armazenadas em buffer ou transmitidas em fluxo contínuo ou uma solicitação ou uma resposta.
useDefaultWebProxy Um valor booliano que especifica se o proxy HTTP configurado automaticamente do sistema deve ser usado, se disponível. O padrão é true.

Elementos filho

Elemento Descrição
<security> Define as configurações de segurança da associação. Esse elemento é do tipo BasicHttpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas pelos pontos de extremidade configurados com essa associação. Esse elemento é do tipo XmlDictionaryReaderQuotasElement.

Elementos pai

Elemento Descrição
<bindings> Esse elemento contém uma coleção de associações padrão e personalizadas.

Comentários

O BasicHttpBinding usa HTTP como transporte para enviar mensagens SOAP 1.1. Um serviço pode usar essa associação para expor terminais que estejam em conformidade com o WS-I BP 1.1, como aqueles que os clientes ASMX consomem. Da mesma forma, um cliente pode usar o BasicHttpBinding para se comunicar com serviços que expõem terminais em conformidade com WS-I BP 1.1, como serviços da Web ASMX ou serviços configurados com BasicHttpBinding.

A segurança está desativada por padrão, mas pode ser adicionada definindo o atributo mode do elemento filho <segurança> para um valor diferente de None. Ela usa uma codificação de mensagem de "Texto" e uma codificação de texto UTF-8 por padrão.

Exemplo 1

O exemplo a seguir demonstra o uso de BasicHttpBinding que fornece comunicação HTTP e interoperabilidade máxima com serviços da Web de primeira e segunda geração. A associação é especificada nos arquivos de configuração para o cliente e o serviço. O tipo de associação é especificado usando o atributo binding do elemento <endpoint>. Se você quiser configurar a associação básica e alterar algumas das suas configurações, será necessário definir uma configuração de associação. O ponto de extremidade deve fazer referência à configuração de associação por nome usando o atributo bindingConfiguration do elemento <endpoint>, conforme mostrado no código de configuração a seguir para o serviço.

<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>

Exemplo 2

Do .NET Framework 4 em diante, associações e comportamentos não precisam ter um nome. A funcionalidade do exemplo anterior pode ser obtida, removendo o bindingConfiguration do endereço do ponto de extremidade e o nome da associação.

<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>

Para obter mais informações sobre a configuração padrão e as associações sem nome, incluindo os comportamentos, confira Configuração Simplificada e Configuração Simplificada para Serviços WCF.

Confira também