使用netTcpBinding在IIS 7.0中托管WCF服务到底需要做什么?

Gon*_*dez 7 wcf iis-7 nettcpbinding

我已经尝试了一个多星期没有任何成功,使用netTcpBinding来托管一个非常简单的类似HelloWorld的wcf服务.

使用http,一切都很好.我甚至可以从远程计算机访问我的服务.但随着tcp问题的出现.

我已经执行了我应该执行的所有步骤,以便在WAS中托管我的服务:

  • .Net 3.0功能已启用,包括http和非http激活

  • 我已将"网络服务"和"IIS_IUSRS"授予包含该网站的文件夹以下权限:

    • 阅读并执行
    • 列出文件夹内容
  • 在防火墙中打开de端口8100和8086.

  • 在IIS管理器/操作/绑定中,设置以下绑定:

    • http 8100:*
    • net.tcp 8086:*
  • 在IIS管理器/管理网站/高级设置中,启用了http和net.tcp协议.

我遇到的原始问题是我能够通过http到达服务但是在尝试使用tcp时出现以下错误:

"无法分派消息,因为端点地址为'net.tcp://myDomain/HelloWorld.Hello.svc'的服务不可用于协议地址. "

我在这个网站上发现了一个帖子,其作者有同样的问题,并通过重新安装.net 3.0功能解决了这个问题.所以我尝试了.我还尝试重新安装IIS 7.0以防万一.现在,情况比起初时更糟糕.如果我在我的Web.Config中使用tcpBinding配置端点我甚至无法使用IE访问我的服务的http地址!我收到以下消息:

无法找到与绑定NetTcpBinding的端点匹配scheme net.tcp的基址.注册的基地址方案是[http].

Web.Config文件如下:


       name="HelloWorld.Hello">
       <host>
          <baseAddresses>
             <add baseAddress="http://myDomain:8100/HelloWorld/" />
         <add baseAddress="net.tcp://myDomain:8086/HelloWorld/" />
          </baseAddresses>
       </host>          

       <endpoint address=""
                 binding="wsHttpBinding"
                 contract="HelloWorld.IHello"
                 bindingConfiguration="httpInseguro">
       </endpoint>

       <endpoint address=""
                 binding="netTcpBinding"
                 contract="HelloWorld.IHello"
                 bindingConfiguration="netTcpInseguro">
       </endpoint>


       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

    </service>
 </services>

<bindings>

  <wsHttpBinding>
    <binding name ="httpInseguro">
      <security mode ="None" />
    </binding>        
  </wsHttpBinding>

  <netTcpBinding>
    <binding name ="netTcpInseguro">
      <security mode ="None" />
    </binding>        
  </netTcpBinding>

</bindings>
Run Code Online (Sandbox Code Playgroud)

和.svc文件是这样的:

有谁能请给我一个关于发生了什么的线索?我真的不知道还能做什么.这是一个真正的头脑,因为使用http绑定不是一个选项.提前致谢.

mar*_*c_s 3

您需要通过调用以下命令来启用 WAS 中的 TCP 托管appcmd.exe

%windir%\system32\inetsrv\appcmd.exe set site 
    "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='*']
Run Code Online (Sandbox Code Playgroud)

查看MSDN 文档或 Michele Leroux Bustamante关于此主题的文章- 它包含您需要的所有信息。

马克