Gon*_*dez 7 wcf iis-7 nettcpbinding
我已经尝试了一个多星期没有任何成功,使用netTcpBinding来托管一个非常简单的类似HelloWorld的wcf服务.
使用http,一切都很好.我甚至可以从远程计算机访问我的服务.但随着tcp问题的出现.
我已经执行了我应该执行的所有步骤,以便在WAS中托管我的服务:
.Net 3.0功能已启用,包括http和非http激活
我已将"网络服务"和"IIS_IUSRS"授予包含该网站的文件夹以下权限:
在防火墙中打开de端口8100和8086.
在IIS管理器/操作/绑定中,设置以下绑定:
在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绑定不是一个选项.提前致谢.
您需要通过调用以下命令来启用 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关于此主题的文章- 它包含您需要的所有信息。
马克