如何配置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>
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托管。