我在IIS上运行了一个带有ServiceHostFactory的WCF服务。使用WSHttpBinding运行正常,但由于速度和所有内容都在同一网络上(没有防火墙),我想使用NetTcpBinding加速一些事情。
当我尝试这样做时,我收到此错误:
无法连接到net.tcp://zzz.xxx.yyy/MyService.svc。连接尝试持续时间跨度为00:00:01.0464395。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它x.x.x.x:808。
我正在使用SecurityMode.None
只是为了确保不会搞砸我,我尝试了两种尝试中的任何一种:
binding.Security.Message.ClientCredentialType = MessageCredentialType.None;
binding.Security.Message.ClientCredentialType = TcpClientCredentialType.Windows;,
另外我应该指出,我从其中一个服务调用中提取了相当多的数据,所以我也把这些(都在http和tcp尝试 - 将maxMessageSize设置为1000000)
binding.MaxReceivedMessageSize = maxMessageSize;
binding.ReaderQuotas.MaxArrayLength = maxMessageSize;
让它工作起来应该很容易,所以我错过了什么?
更新:我将TCP端口808添加到网站标识并再次尝试。现在我收到了这个错误:
您尝试为不支持.Net Framing的服务创建频道。您可能遇到HTTP端点。
答案 0 :(得分:23)
如果您使用的是Vista,请确保WAS和Net.Tcp侦听器适配器服务正在运行。
答案 1 :(得分:15)
在IIS 7.0中查看启用非HTTP绑定的this post。默认情况下,您必须在IIS 7.0中显式启用net.tcp。
希望这有帮助。
更新:
看到您的评论 - 遗憾的是,IIS 6.0中不支持net.tcp。查看this link,其中详细说明了各种主机(包括自托管,WAS和IIS)支持的WCF绑定。看起来只有HTTP绑定才能在IIS 6.0中运行。
答案 2 :(得分:15)
对于任何遇到这种情况的人,我的故障排除net.tcp WCF问题指南如下:
c:\windows\system32\inetsrv
,输入appcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp
完成。
答案 3 :(得分:7)
启动Net.Tcp侦听器适配器服务后,服务正常。
答案 4 :(得分:1)
是否可以像服务主机上的防火墙规则一样简单,禁止端口808?
答案 5 :(得分:1)
检查IIS是否有两个协议指向相同的端口号,我发现如果是这种情况,它将无法正常工作。
答案 6 :(得分:1)
我在Window Server 2008 R2上也遇到了这个问题
确保Net.Tcp端口共享服务也已启动,因为它是Net.Tcp侦听器适配器的依赖项。