c # - Sådan konfigureres en Windows Azure WCF Service Web Role for at arbejde med netTcpBinding?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en WCF Service hostet på Windows Azure, og jeg har for nylig ændret sin kontrakt for at være en duplexkontrakt (for at understøtte en fremdriftslinje på klienten). Jeg brugte først wsDualHttpBinding, som fungerede godt på min lokale maskine, men som forventet mislykkedes at arbejde, når jeg udnyttede det.


Jeg forsøger nu at konfigurere tjenesten til at fungere med netTcpBinding, men jeg får fejlen. Den angivne protokol er ikke gyldig. Protokollen 'tcp' for bindingen hedder 'Endpoint1' understøttes i øjeblikket ikke. '.


ServiceDefinition.csdef:


<Endpoints>
  <InputEndpoint name="AlertsEndpoint" protocol="tcp" port="3030" />
</Endpoints>


web.config:


 <services>      
      <service name="AlertsService.AlertsService" behaviorConfiguration="AlertsServiceBehavior">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration="NetTcp" contract="AlertsService.IAlertsService" />
        <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="MexTcp" contract="IMetadataExchange" />
      </service>
    </services>  

<bindings>
      <netTcpBinding>
        <binding name="NetTcp" />
      </netTcpBinding>
      <mexTcpBinding>
        <binding name="MexTcp"/>
      </mexTcpBinding>
</bindings>      

Bedste reference


Web Roles hosting WCF-tjenester understøtter ikke TCP-protokollen.
Du skal være vært for din WCF-tjeneste i en Worker Role.


Web Roller:



  Webroller i Windows Azure yder støtte til HTTP og HTTPS
  protokoller ...



Arbejdsroller:



  ... og tillade processen at kommunikere eksternt ved hjælp af en række
  TCP-baserede applikationsprotokoller med WCF-tjenesten ved at bruge
  netTcpBindings bindende


Andre referencer 1


Du kan aktivere uanset bindinger, du kan lide til WCF på Azure, i en webrolle ved at køre startskripter for at muliggøre at sige net.tcp ( efter alle dens bare IIS i slutningen af ​​dagen, selvom jeg indrøm det mere smerte end det burde være! ). Fuld detaljer kan ses i denne artikel [6]

Andre referencer 2


Lad mig præcisere dette, da svaret fra @magnus johansson ikke er helt korrekt. Webroller i Windows Azure garanterer helt sikkert tcp. Dog: Hosting WCF-tjenester i IIS er kun begrænset til HTTP. Hvis du vælger at instantiere din egen ServiceHost uden for IIS, så har du ikke noget problem med tcp.


Her er en MSDN artikel, der beskriver WCF hosting i IIS, mere detaljeret. [7]