<netHttpBinding>

Rappresenta un'associazione che un servizio Windows Communication Foundation (WCF) può usare per configurare ed esporre endpoint in grado di comunicare tramite HTTP. Nel caso di un contratto duplex, verrà usato Web Sockets. In caso contrario, verrà usato HTTP.

<Configurazione>
  <system.serviceModel>
    <Associazioni>
      <netHttpBinding>

Sintassi

<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

Attributi ed elementi

Nelle sezioni seguenti vengono descritti gli attributi, gli elementi figlio e gli elementi padre.

Attributi

Attributo Descrizione
allowCookies Valore booleano che indica se il client accetta cookie e li propaga alle richieste future. Il valore predefinito è false.

È possibile usare questa proprietà quando si interagisce con servizi Web ASMX che usano cookie. In questo modo i cookie restituiti dal server vengono copiati automaticamente in tutte le richieste client future per quel servizio.
bypassProxyOnLocal Valore booleano che indica se ignorare il server proxy per indirizzi locali. Il valore predefinito è false.

Una risorsa Internet è locale se dispone di un indirizzo locale. Un indirizzo locale è uno che si trova nello stesso computer, la LAN locale o intranet e viene identificato, sintatticamente, dalla mancanza di un punto (.) come negli URI http://webserver/ e http://localhost/.

L'impostazione di questo attributo determina se gli endpoint configurati con BasicHttpBinding usano il server proxy quando accedono alle risorse locali. Se questo attributo è true, le richieste alle risorse Internet locali non usano il server proxy. Quando l'attributo è impostato su true, usare il nome host invece di localhost se si desidera che i client passino da un proxy per comunicare con servizi nello stesso computer.

Se questo attributo è false, tutte le richieste Internet vengono effettuate tramite il server proxy.
closeTimeout Valore TimeSpan che specifica l'intervallo di tempo fornito per il completamento di un'operazione di chiusura. Questo valore deve essere maggiore o uguale a Zero. L'impostazione predefinita è 00:01:00.
hostNameComparisonMode Specifica la modalità di confronto del nome host HTTP usata per analizzare gli URI. L'attributo è di tipo HostNameComparisonMode, che indica se il nome host viene usato per raggiungere il servizio in caso di corrispondenza nell'URI. Il valore predefinito è StrongWildcard, che ignora il nome host nella corrispondenza.
maxBufferPoolSize Valore intero che specifica la quantità massima di memoria allocata al gestore dei buffer dei messaggi che riceve i messaggi dal canale. Il valore predefinito è 524.288 (0x80000) byte.

Il gestore dei buffer usa un pool di buffer per ridurre al minimo il costo legato all'utilizzo dei buffer. I buffer sono necessari per elaborare i messaggi provenienti dal servizio quando arrivano dal canale. Se la memoria nel pool di buffer non è sufficiente per elaborare il carico dei messaggi, il gestore dei buffer deve allocare altra memoria dall'heap CLR, aumentando l'overhead della procedura di Garbage Collection. Se la quantità di memoria aggiuntiva allocata in questo modo è notevolmente elevata, ciò significa che le dimensioni del pool di buffer sono troppo ridotte e che per migliorare le prestazioni è possibile allocare più risorse a tale pool mediante l'aumento del limite specificato da questo attributo.
maxBufferSize Un valore intero che specifica la dimensione massima, in byte, di un buffer che memorizza i messaggi mentre vengono elaborati per un endpoint configurato con questa associazione. L'impostazione predefinita è 65.536 byte.
maxReceivedMessageSize Numero intero positivo che definisce la dimensione massima del messaggio, incluse le intestazioni, che può essere ricevuto in canale configurato con questa associazione. Il mittente riceve un errore SOAP se il messaggio è troppo grande per il destinatario. Il destinatario elimina il messaggio e crea una voce dell'evento nel registro di traccia. Il valore predefinito è 65.536 byte.
messageEncoding Definisce il codificatore usato per codificare il messaggio SOAP. I valori validi sono i seguenti:

- Testo: usare un codificatore di messaggi di testo.
- Mtom: usare un codificatore MTOM (Message Transmission Organization Mechanism 1.0).

L'impostazione predefinita è Text. L'attributo è di tipo WSMessageEncoding.
name Stringa che contiene il nome della configurazione dell'associazione. Questo valore deve essere univoco perché viene usato per identificare l'associazione. A partire da .NET Framework 4, le associazioni e i comportamenti non devono avere un nome. Per altre informazioni sulla configurazione predefinita e sui comportamenti senza nome, vedere Configurazione semplificata e configurazione semplificata per i servizi WCF.
openTimeout Valore TimeSpan che specifica l'intervallo di tempo fornito per il completamento di un'operazione di apertura. Questo valore deve essere maggiore o uguale a Zero. L'impostazione predefinita è 00:01:00.
proxyAddress URI che contiene l'indirizzo del proxy HTTP. Se useSystemWebProxy è impostato su true, questa impostazione deve essere null. Il valore predefinito è null.
receiveTimeout Valore TimeSpan che specifica l'intervallo di tempo fornito per il completamento di un'operazione di ricezione. Questo valore deve essere maggiore o uguale a Zero. L'impostazione predefinita è 00:10:00.
sendTimeout Valore TimeSpan che specifica l'intervallo di tempo fornito per il completamento di un'operazione di invio. Questo valore deve essere maggiore o uguale a Zero. L'impostazione predefinita è 00:01:00.
textEncoding Imposta la codifica del set di caratteri da usare per l'emissione dei messaggi nell'associazione. I valori validi sono i seguenti:

- BigEndianUnicode: codifica BigEndian Unicode.
- Unicode: codifica a 16 bit.
- UTF8: codifica a 8 bit

Il valore predefinito è UTF8. L'attributo è di tipo Encoding.
transferMode Valore TransferMode valido che specifica se i messaggi vengono memorizzati nel buffer o inviati nel flusso in una richiesta o una risposta.
useDefaultWebProxy Valore booleano che specifica se il proxy HTTP configurato automaticamente del sistema deve essere usato, se disponibile. Il valore predefinito è true.

Elementi figlio

Elemento Descrizione
<Sicurezza> Definisce le impostazioni di sicurezza per l'associazione. L'elemento è di tipo BasicHttpSecurityElement.
<readerQuotas> Definisce i vincoli sulla complessità dei messaggi SOAP che possono essere elaborati dagli endpoint configurati con questa associazione. L'elemento è di tipo XmlDictionaryReaderQuotasElement.

Elementi padre

Elemento Descrizione
<Associazioni> Questo elemento contiene una raccolta di associazioni standard e personalizzate.

Commenti

NetHttpBinding usa HTTP come trasporto per l'invio di messaggi. Nel caso di un contratto duplex, verrà usato Web Sockets. Se si usa un contratto richiesta-risposta, NetHttpBinding si comporta come BasicHttpBinding con un codificatore binario.

La sicurezza è disattivata per impostazione predefinita, ma può essere aggiunta l'impostazione dell'attributo mode dell'elemento <figlio di sicurezza> su un valore diverso da None. Per impostazione predefinita usa una codifica dei messaggi "Text" e una codifica del testo UTF-8.

Esempio 1

Nell'esempio seguente è dimostrato l'uso di NetHttpBinding che fornisce la comunicazione HTTP e la interoperabilità massima con servizi Web di prima e seconda generazione. L'associazione è specificata nei file di configurazione per il client e il servizio. Il tipo di associazione specificato usando l'attributo binding dell'elemento <endpoint>. Se si desidera configurare l'associazione di base e modificare alcune delle relative impostazioni, è necessario definire una configurazione di associazione. L'endpoint deve fare riferimento alla configurazione di associazione tramite il nome usando l'attributo bindingConfiguration dell'elemento <endpoint>, come è illustrato nel seguente codice di configurazione del servizio.

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

Esempio 2

A partire da .NET Framework 4, le associazioni e i comportamenti non devono avere un nome. La funzionalità dell'esempio precedente può essere eseguita rimuovendo bindingConfiguration dall'indirizzo dell'endpoint e dal nome dall'associazione.

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

Per altre informazioni sulla configurazione predefinita e sui comportamenti senza nome, vedere Configurazione semplificata e configurazione semplificata per i servizi WCF.

Vedi anche