当前位置:  开发笔记 > 开发工具 > 正文

为什么我不能用net.tcp连接到WCF服务,但我可以使用http?

如何解决《为什么我不能用net.tcp连接到WCF服务,但我可以使用http?》经验,为你挑选了4个好方法。

我在IIS上运行了一个带有ServiceHostFactory的WCF服务.它与WSHttpBinding运行良好,但由于速度和所有在同一网络(没有防火墙),我想使用NetTcpBinding加速一些事情.

当我尝试这样做时,我得到这个错误:

无法连接到net.tcp://zzz.xxx.yyy/MyService.svc.连接尝试持续时间跨度为00:00:01.0464395.TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它xxxx: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端点.

小智.. 23

如果您使用的是Vista,请确保WAS和Net.Tcp侦听器适配器服务正在运行.



1> 小智..:

如果您使用的是Vista,请确保WAS和Net.Tcp侦听器适配器服务正在运行.


WAS代表Window Process Activation Service
+1 Net.Tcp监听器适配器服务由于某种原因被关闭:/欢呼.

2> David Mohund..:

查看有关在IIS 7.0中启用非HTTP绑定的这篇文章.默认情况下,您必须在IIS 7.0中显式启用net.tcp.

希望这可以帮助.

更新:

看到你的评论 - 遗憾的是,IIS 6.0中不支持net.tcp.查看此链接,其中详细说明了各种主机(包括自托管,WAS和IIS)支持的WCF绑定.看起来只有HTTP绑定在IIS 6.0中有效.



3> Matt Roberts..:

对于任何遇到这种情况的人,我的故障排除net.tcp WCF指南如下:

    检查net.tcp是否为网站启用的协议(在IIS中,右键单击该站点,转到高级设置,并确保启用的协议包含"net.tcp"

    我不确定这是否是偏执狂,我也一直需要通过命令行以及步骤1为站点启用net.tcp.打开命令提示符,然后c:\windows\system32\inetsrv输入appcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp

    检查IIS中网站的绑定是否有net.tcp的条目,并且您已将其绑定到正确的端口号(对我来说,我使用9000:*作为我对端口9000的绑定).还要检查IIS中没有其他网站使用与该端口相同的net.tcp绑定

    检查"Net.TCP侦听器适配器"服务是否正在运行.

完成.



4> 小智..:

一旦我启动Net.Tcp监听器适配器服务,服务对我来说工作正常.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有