Uso di NetHttpBindingUsing the NetHttpBinding

NetHttpBinding è un'associazione progettata per usare i servizi HTTP o WebSocket e usa la codifica binaria per impostazione predefinita.NetHttpBinding is a binding designed for consuming HTTP or WebSocket services and uses binary encoding by default. L'oggetto NetHttpBinding rileverà se viene usato con un contratto request/reply o un contratto duplex e modificherà il comportamento di conseguenza. Utilizzerà HTTP per i contratti request/reply e WebSockets per i contratti duplex.NetHttpBinding will detect whether it is used with a request-reply contract or duplex contract and change its behavior to match - it will use HTTP for request-reply contracts and WebSockets for duplex contracts. Questo comportamento può essere sottoposto a override utilizzando il WebSocketTransportUsage impostazione:This behavior can be overridden using the WebSocketTransportUsage setting:

  1. Always: forza l'uso di WebSockets anche per i contratti request/reply.Always - This forces WebSockets to be used even for request-reply contracts.

  2. Never: impedisce l'uso di WebSockets.Never - This prevents WebSockets from being used. Il tentativo di utilizzo di un contratto duplex con questa impostazione genererà un'eccezione.Attempting to use a duplex contract with this setting will result in an exception.

  3. WhenDuplex: si tratta del valore predefinito e si comporta come descritto in precedenza.WhenDuplex - This is the default value and behaves as described above.

NetHttpBinding supporta sessioni affidabili sia in modalità HTTP sia in modalità WebSocket.NetHttpBinding supports reliable sessions in both HTTP mode and WebSocket mode. Nella modalità WebSocket, le sessioni vengono fornite dal trasporto.In WebSocket mode sessions are provided by the transport.

Avviso

Quando si usa NetHttpBinding e l'elemento TransferMode dell'associazione è impostato su TransferMode.Streamed, i flussi di grandi dimensioni possono causare un deadlock e quindi il timeout della chiamata.When using the NetHttpBinding and the binding’s TransferMode is set to TransferMode.Streamed, large streams may cause a deadlock and the call will timeout. Per risolvere il problema inviare messaggi più piccoli o usare TransferMode.Buffered.To work around this issue send smaller messages or use TransferMode.Buffered.

Configurazione dell'utilizzo di NetHttpBinding in un servizioConfiguring a Service to use NetHttpBinding

L'endpoint NetHttpBinding può essere configurato come qualsiasi altra associazione.The NetHttpBinding can be configured the same as any other binding. Nel frammento di configurazione seguente è illustrato come configurare un servizio WCF con NetHttpBinding.The following configuration snippet illustrates how to configure a WCF service with NetHttpBinding.

<system.serviceModel>  
    <services>  
      <service name="WcfService1.Service1">  
        <endpoint address=""  
                  binding="netHttpBinding"  
                  contract="WcfService1.IService1"/>  
        <endpoint address="mex"  
                  binding="mexHttpBinding"  
                  contract="IMetadataExchange"/>  
      </service>  
    </services>  
    <bindings>  
      <netHttpBinding>  
        <binding name="My_NetHttpBindingConfig">  
          <webSocketSettings transportUsage="WhenDuplex"/>  
        </binding>  
      </netHttpBinding>  
    </bindings>  
    <!- ... -->   
  </system.serviceModel>  

Nel frammento di codice seguente viene illustrato come aggiungere l'oggetto NetHttpBinding nel codice.The following code snippet shows how to add the NetHttpBinding in code.

ServiceHost svchost = new ServiceHost(typeof(Service1), baseAddress);  
            NetHttpBinding binding = new NetHttpBinding();  
            svchost.AddServiceEndpoint(typeof(IService1), binding, address);   
        }  

Vedere ancheSee Also

Configurazione delle associazioni per i serviziConfiguring Bindings for Services
AssociazioniBindings
Associazioni fornite dal sistemaSystem-Provided Bindings
Servizi duplexDuplex Services