A NetHttpBinding használata

NetHttpBinding HTTP- vagy WebSocket-szolgáltatások használatához készült kötés, és alapértelmezés szerint bináris kódolást használ. NetHttpBinding észleli, hogy kérés-válasz szerződéssel vagy kétoldalas szerződéssel használják-e, és módosítja a viselkedését a megfelelőre – HTTP-t fog használni a kérés-válasz szerződésekhez és WebSocketeket a kétoldalas szerződésekhez. Ez a viselkedés felülbíráltatható a WebSocketTransportUsage következő beállítással:

  1. Always - Ez arra kényszeríti a WebSocketeket, hogy még a kérelem-válasz szerződésekhez is használhatók legyenek.

  2. Never – Ez megakadályozza a WebSockets használatát. Ha ezzel a beállítással duplex szerződést próbál használni, kivételhez vezet.

  3. WhenDuplex - Ez az alapértelmezett érték, és a fent leírt módon viselkedik.

NetHttpBinding támogatja a megbízható munkameneteket HTTP módban és WebSocket módban is. A WebSocket módban a munkameneteket az átvitel biztosítja.

Figyelmeztetés

Amikor a NetHttpBinding és a kötés TransferMode-ja TransferMode.Streamed értékre van állítva, a nagy streamek holtpontot okozhatnak, és a hívás időtúllépéshez vezethet. A probléma megoldásához küldjön kisebb üzeneteket, vagy használja a TransferMode.Buffered parancsot.

Szolgáltatás konfigurálása a NetHttpBinding használatára

Ez NetHttpBinding ugyanúgy konfigurálható, mint bármely más kötés. Az alábbi konfigurációs kódrészlet bemutatja, hogyan konfigurálhat WCF-szolgáltatást.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>  

Az alábbi kódrészlet bemutatja, hogyan lehet a NetHttpBinding elemet hozzáadni a kódban.

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

Lásd még