代码之家  ›  专栏  ›  技术社区  ›  Per Hornshøj-Schierbeck

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

  •  21
  • Per Hornshøj-Schierbeck  · 技术社区  · 16 年前

    我在带有ServiceHostfactory的IIS上运行了一个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框架的服务的通道。您可能遇到了HTTP端点。

    7 回复  |  直到 10 年前
        1
  •  15
  •   David Mohundro alexsmn    16 年前

    退房 this post 在IIS 7.0中启用非HTTP绑定。默认情况下,必须在IIS 7.0中显式启用net.tcp。

    希望这有帮助。

    更新:

    看到您的评论-很遗憾,IIS 6.0不支持net.tcp。退房 this link 其中详细介绍了各种主机(包括自宿主、WAS和IIS)支持的WCF绑定。看起来只有HTTP绑定在IIS 6.0中有效。

        2
  •  23
  •   vinny    16 年前

    如果您使用的是Vista,那么请确保was和net.tcp侦听器适配器服务正在运行。

        3
  •  15
  •   Matt Roberts    13 年前

    对于遇到这种情况的任何人来说,我的net.tcp wcf问题解决指南如下:

    1. 检查net.tcp是否为网站启用的协议(在IIS中,右键单击该网站,转到高级设置,并确保启用的协议包括“net.tcp”
    2. 我不确定这是否是一个偏执的事情,我也一直需要通过命令行和步骤1为站点启用net.tcp。打开命令提示,然后从 c:\windows\system32\inetsrv ,进入 appcmd.exe set app "NameOfWebsite/" /enabledProtocols:http,net.tcp
    3. 请检查IIS中网站的绑定是否包含net.tcp的条目,以及您是否已将其绑定到正确的端口号(对于我,我使用9000:*作为对端口9000的绑定)。还要检查IIS中没有其他网站使用与该端口相同的net.tcp绑定
    4. 检查“net.tcp listener adapter”服务是否正在运行。

    完成。

        4
  •  7
  •   rosi    14 年前

    一旦我启动net.tcp侦听器适配器服务,服务就可以正常工作了。

        5
  •  1
  •   ZombieSheep    16 年前

    是否可以像服务主机上的防火墙规则不允许端口808那样简单?

        6
  •  1
  •   amitdotchauhan    14 年前

    检查IIS是否有两个指向相同端口号的协议,我刚发现如果是这样,它将不起作用。

        7
  •  1
  •   TheAlbear    10 年前

    我在Windows Server 2008 R2上也遇到了这个问题

    只需确保net.tcp端口共享服务也已启动,因为它是net.tcp侦听器适配器的依赖项。

    推荐文章