<netHttpBinding>

Representa um enlace que um serviço do Windows Communication Foundation (WCF) pode utilizar para configurar e expor pontos finais capazes de comunicar através de HTTP. Quando utilizado com um contrato duplex, serão utilizados Sockets Web, caso contrário, será utilizado HTTP.

<configuração>
  <system.serviceModel>
    <enlaces>
      <netHttpBinding>

Sintaxe

<netHttpBinding>
  <binding allowCookies="Boolean"
           bypassProxyOnLocal="Boolean"
           closeTimeout="TimeSpan"
           hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
           maxBufferPoolSize="Integer"
           maxBufferSize="Integer"
           maxReceivedMessageSize="Integer"
           messageEncoding="Binary/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>
</netHttpBinding>

Tipo

Type

Atributos e Elementos

As secções seguintes descrevem atributos, elementos subordinados e elementos principais.

Atributos

Atributo Descrição
allowCookies Um valor booleano que indica se o cliente aceita cookies e os propaga em pedidos futuros. A predefinição é false.

Pode utilizar esta propriedade quando interage com serviços Web ASMX que utilizam cookies. Desta forma, pode certificar-se de que os cookies devolvidos a partir do servidor são automaticamente copiados para todos os futuros pedidos de cliente para esse serviço.
bypassProxyOnLocal Um valor booleano que indica se deve ignorar o servidor proxy para endereços locais. A predefinição é false.

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

Definir este atributo determina se os pontos finais configurados com o BasicHttpBinding utilizam o servidor proxy ao aceder aos recursos locais. Se este atributo for true, os pedidos para recursos locais da Internet não utilizam o servidor proxy. Utilize o nome do anfitrião (em vez de localhost) se pretender que os clientes percorram um proxy quando falarem com serviços no mesmo computador quando este atributo estiver definido como true.

Quando este atributo é false, todos os pedidos da Internet são feitos através do servidor proxy.
closeTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação próxima. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
hostNameComparisonMode Especifica o modo de comparação de nome de anfitrião HTTP utilizado para analisar URIs. Este atributo é do tipo HostNameComparisonMode, que indica se o nome do anfitrião é utilizado para aceder ao serviço quando corresponde ao URI. O valor predefinido é StrongWildcard, que ignora o nome do anfitrião na correspondência.
maxBufferPoolSize Um valor inteiro que especifica a quantidade máxima de memória que é alocada para utilização pelo gestor das memórias intermédias de mensagens que recebem mensagens do canal. O valor predefinido é bytes 524288 (0x80000).

O Gestor de Memória Intermédia minimiza o custo da utilização de memória intermédia com um conjunto de memória intermédia. As memórias intermédias são necessárias para processar mensagens pelo serviço quando saem do canal. Se não existir memória suficiente no conjunto de memória intermédia para processar a carga da mensagem, o Gestor de Memória Intermédia tem de alocar memória adicional da área de dados CLR, o que aumenta a sobrecarga da recolha de memória. A alocação extensiva da área de memória do CLR é uma indicação de que o tamanho do conjunto de memória intermédia é demasiado pequeno e que o desempenho pode ser melhorado com uma alocação maior ao aumentar o limite especificado por este atributo.
maxBufferSize Um valor inteiro que especifica o tamanho máximo, em bytes, de uma memória intermédia que armazena mensagens enquanto são processadas para um ponto final configurado com este enlace. O valor predefinido é 65 536 bytes.
maxReceivedMessageSize Um número inteiro positivo que define o tamanho máximo da mensagem, em bytes, incluindo cabeçalhos, para uma mensagem que pode ser recebida num canal configurado com este enlace. O remetente recebe uma falha SOAP se a mensagem for demasiado grande para o recetor. O recetor remove a mensagem e cria uma entrada do evento no registo de rastreio. A predefinição é 65 536 bytes.
messageEncoding Define o codificador utilizado para codificar a mensagem SOAP. Os valores válidos incluem o seguinte:

- Texto: utilize um codificador de mensagens de texto.
- Mtom: utilize um codificador MTOM (Message Transmission Organization Mechanism 1.0).

A predefinição é Texto. Este atributo é do tipo WSMessageEncoding.
name Uma cadeia que contém o nome de configuração do enlace. Este valor deve ser exclusivo porque é utilizado como uma identificação para o enlace. A partir do .NET Framework 4, não são necessários enlaces e comportamentos para ter um nome. Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF.
openTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação aberta. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
proxyAddress Um URI que contém o endereço do proxy HTTP. Se useSystemWebProxy estiver definida como true, esta definição tem de ser null. A predefinição é null.
receiveTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de receção. Este valor deve ser maior ou igual a Zero. A predefinição é 00:10:00.
sendTimeout Um TimeSpan valor que especifica o intervalo de tempo fornecido para a conclusão de uma operação de envio. Este valor deve ser maior ou igual a Zero. A predefinição é 00:01:00.
textEncoding Define a codificação do conjunto de carateres a utilizar para emitir mensagens no enlace. Os valores válidos incluem o seguinte:

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

A predefinição é UTF8. Este atributo é do tipo Encoding.
transferMode Um valor válido TransferMode que especifica se as mensagens são transmitidas em memória intermédia ou transmitidas em fluxo num pedido ou resposta.
useDefaultWebProxy Um valor booleano que especifica se o proxy HTTP configurado automaticamente do sistema deve ser utilizado, se disponível. A predefinição é true.

Elementos Subordinados

Elemento Descrição
<segurança> Define as definições de segurança do enlace. Este elemento é do tipo BasicHttpSecurityElement.
<readerQuotas> Define as restrições sobre a complexidade das mensagens SOAP que podem ser processadas por pontos finais configurados com este enlace. Este elemento é do tipo XmlDictionaryReaderQuotasElement.

Elementos Principais

Elemento Descrição
<enlaces> Este elemento contém uma coleção de enlaces padrão e personalizados.

Observações

O NetHttpBinding utiliza HTTP como o transporte para enviar mensagens. Quando utilizado com um contrato duplex, serão utilizados Sockets Web. Quando utilizado com um contrato de pedido-resposta, o NetHttpBinding irá comportar-se como um BasicHttpBinding com um codificador binário.

A segurança está desativada por predefinição, mas pode ser adicionada definindo o atributo de modo do <elemento subordinado de segurança> a um valor diferente de None. Utiliza uma codificação de mensagens "Texto" e codificação de texto UTF-8 por predefinição.

Exemplo 1

O exemplo seguinte demonstra a utilização de NetHttpBinding que fornece comunicação HTTP e interoperabilidade máxima com serviços Web de primeira e segunda geração. O enlace é especificado nos ficheiros de configuração do cliente e do serviço. O tipo de enlace é especificado com o binding atributo do <endpoint> elemento . Se quiser configurar o enlace básico e alterar algumas das respetivas definições, é necessário definir uma configuração de enlace. O ponto final tem de referenciar a configuração de enlace por nome com o bindingConfiguration atributo do <endpoint> elemento, conforme mostrado no seguinte código de configuração para o serviço.

<system.serviceModel>
  <services>
    <service type="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <endpoint address=""
                binding="netHttpBinding"
                bindingConfiguration="Binding1"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
  </services>
  <bindings>
    <netHttpBinding>
      <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="Binary"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true">
        <security mode="None" />
      </binding>
    </netHttpBinding>
  </bindings>
</system.serviceModel>

Exemplo 2

A partir do .NET Framework 4, os enlaces e comportamentos não têm de ter um nome. A funcionalidade do exemplo anterior pode ser obtida ao remover o bindingConfiguration do endereço do ponto final e o nome do enlace.

<system.serviceModel>
  <services>
    <service type="Microsoft.ServiceModel.Samples.CalculatorService"
             behaviorConfiguration="CalculatorServiceBehavior">
      <endpoint address=""
                binding="netHttpBinding"
                contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </service>
  </services>
  <bindings>
    <netHttpBinding>
      <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="Binary"
               textEncoding="utf-8"
               bypassProxyOnLocal="false"
               useDefaultWebProxy="true">
        <security mode="None" />
      </binding>
    </netHttpBinding>
  </bindings>
</system.serviceModel>

Para obter mais informações sobre a configuração predefinida e os enlaces e comportamentos sem nome, veja Configuração Simplificada e Configuração Simplificada para os Serviços WCF.

Ver também