Verwenden der NetHttpBindingUsing the NetHttpBinding

NetHttpBinding ist eine für die Nutzung von HTTP- oder WebSocket-Diensten entwickelte Bindung, die standardmäßig die binäre Codierung verwendet.NetHttpBinding is a binding designed for consuming HTTP or WebSocket services and uses binary encoding by default. NetHttpBinding erkennt, ob sie mit einem Anforderung-Antwort-Vertrag oder einem Duplexvertrag verwendet wird, und ändert das Verhalten entsprechend, indem HTTP für Anforderung-Antwort-Verträge und WebSockets für Duplexverträge verwendet wird.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. Dieses Verhalten kann überschrieben werden, mithilfe der WebSocketTransportUsage Einstellung:This behavior can be overridden using the WebSocketTransportUsage setting:

  1. Always: Erzwingt die Verwendung von WebSockets sogar für Anforderung-Antwort-Verträge.Always - This forces WebSockets to be used even for request-reply contracts.

  2. Never: Verhindert die Verwendung von WebSockets.Never - This prevents WebSockets from being used. Der Versuch, einen Duplexvertrag mit dieser Einstellung zu verwenden, löst eine Ausnahme aus.Attempting to use a duplex contract with this setting will result in an exception.

  3. WhenDuplex: Dies ist der Standardwert, der das oben beschriebene Verhalten aufweist.WhenDuplex - This is the default value and behaves as described above.

NetHttpBinding unterstützt zuverlässige Sitzungen im HTTP-Modus und WebSocket-Modus.NetHttpBinding supports reliable sessions in both HTTP mode and WebSocket mode. Im WebSocket-Modus werden Sitzungen vom Transport bereitgestellt.In WebSocket mode sessions are provided by the transport.

Warnung

Wenn NetHttpBinding verwendet wird und TransferMode für die Bindung auf TransferMode.Streamed festgelegt ist, verursachen große Datenströme ein Deadlock und der Aufruf ein Timeout.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. Um dieses Problem zu umgehen, senden Sie kleinere Nachrichten oder verwenden TransferMode.Buffered.To work around this issue send smaller messages or use TransferMode.Buffered.

Konfigurieren eines Diensts für die Verwendung von "NetHttpBinding"Configuring a Service to use NetHttpBinding

NetHttpBinding kann wie jede andere Bindung konfiguriert werden.The NetHttpBinding can be configured the same as any other binding. Der folgende Konfigurationsausschnitt veranschaulicht, wie ein WCF-Dienst mit NetHttpBinding konfiguriert wird.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>  

Der folgende Codeausschnitt veranschaulicht, wie NetHttpBinding im Code hinzugefügt wird.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);   
        }  

Siehe auchSee Also

Konfigurieren von Bindungen für DiensteConfiguring Bindings for Services
BindungenBindings
Vom System bereitgestellte BindungenSystem-Provided Bindings
DuplexdiensteDuplex Services