【发布时间】:2009-07-09 18:46:15
【问题描述】:
我已经尝试了一个多星期没有任何成功,使用 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 的端点的方案 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>
.svc 文件是这样的:
谁能告诉我发生了什么事?我真的不知道还能做什么。这是一个真正令人头疼的问题,因为使用 http 绑定不是一种选择。 提前致谢。
【问题讨论】:
-
您运行的是什么版本的 .NET?
-
嗨,约翰,这是 .net 3.5。问候。
-
我也遇到了同样的问题。您在配置文件中添加了什么以使其正常工作?
-
嗨 Luiz,不幸的是,自几个月前以来,我们不再使用 netTcpBinding 运行 owr 服务,因此我没有当时最终可以使用的配置文件。但是,我记得马克上面的回答在当时有所帮助。可以肯定的一件事是,我必须检查互联网上的几个网站才能弄清楚。我无法在单个站点中找到完整的程序。最良好的祝愿,贡萨洛
-
谢谢 Gonzalo,我会继续寻找和尝试。到目前为止,我已经尝试了很多不同的建议。
标签: wcf iis-7 nettcpbinding