如何配置Windows Azure WCF服务Web角色以使用netTcpBinding

本文关键字:角色 Web 服务 netTcpBinding WCF Azure 何配置 配置 Windows | 更新日期: 2023-09-27 18:25:51

我在Windows Azure上托管了一个WCF服务,我最近刚刚将其合同更改为双工合同(以支持客户端上的进度条)。我第一次使用wsDualHttpBinding,它在我的本地机器上运行良好,但正如预期的那样,一旦我部署它,它就无法工作

我现在正试图将服务配置为使用netTcpBinding,但收到错误"指定的协议无效。当前不支持名为"Endpoint1"的绑定的协议"tcp"。".

ServiceDefinition.csdf:

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

如何配置Windows Azure WCF服务Web角色以使用netTcpBinding

托管WCF服务的Web Roles不支持TCP协议。您将需要在Worker Role中托管WCF服务。

Web角色:

Windows Azure中的Web角色提供对HTTP和HTTPS的支持协议。。。

工人角色:

并允许进程使用各种通过使用netTcpBindings绑定

您可以在Azure上以web角色为WCF启用任何您喜欢的绑定,方法是运行启动脚本来启用net.tcp毕竟它最终只是IIS,尽管我承认这比它应该的更痛苦!)。完整的细节可以在本文中看到

让我澄清一下,因为@magnus johansson给出的答案并不完全正确。Windows Azure中的Web角色肯定支持tcp。但是:在IIS中托管WCF服务仅限于HTTP。如果您选择在IIS之外实例化自己的ServiceHost,那么tcp就没有问题了。

下面是一篇MSDN文章,更详细地描述了IIS中的WCF托管。