在IIS7.5上托管的WCF netTcpBinding停止工作

时间:2011-08-01 13:11:22

标签: .net wcf iis net.tcp

我有一个简单的.NET 4 WCF服务,我在IIS7.5上本地托管。最初我使用httpBinding进行托管,效果很好。然后我将其切换到netTcpBinding,相应地更改web.config文件之后也正常工作。但是今天它决定停止工作。我无法使用测试客户端连接到服务,获取:

URI: net.tcp://localhost/case/service.svc/mex Metadata contains a reference that cannot be resolved: 'net.tcp://localhost/case/service.svc/mex'. The message could not be dispatched because the service at the endpoint address 'net.tcp://localhost/case/service.svc/mex' is unavailable for the protocol of the address.

我已检查过(仍然)安装了非http激活服务; net tcp listener服务正在运行; net.tcp位于站点的已启用协议列表中;我跑了servicemodelreg.exe -ia;我也重新运行aspnet_regiis.exe -i;最后我检查了网站上的net.tcp绑定。

如果我运行netstat我可以看到有东西在监听端口,但我无法连接到它。

这让我感到疯狂,因为今天早上工作正常(就像上周一样),现在却没有。

编辑:如果我在IE中访问该服务,那么我可以看到它抛出以下异常:

Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http].

但是查看似乎不是这样的web.config文件:

<services>
  <service behaviorConfiguration="ServiceBehavior" name="[REMOVED].[REMOVED]">
    <endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding" contract="[REMOVED].[REMOVED]" />
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
  </service>
</services>

<bindings>
  <netTcpBinding>
    <binding name="PortSharingBinding" portSharingEnabled="true">
      <security mode="None"/>
    </binding>
    <binding name="mexTcpBinding" portSharingEnabled="true">
      <security mode="None" />
    </binding>
  </netTcpBinding>
</bindings>

2 个答案:

答案 0 :(得分:7)

好的,终于解决了。我在站点级别启用了net.tcp协议,但是在应用程序级别没有启用它。我想它一定是以前的,我想我可能在更改项目名称之前创建了一个新的应用程序,显然忘了在应用程序上设置协议 - doh!

因此,在IIS上托管WCF net.tcp服务的最终清单是:

  1. 确保已安装WCF非HTTP激活服务
  2. 确保Net.Tcp Listener服务和Net.Tcp Port Sharing服务都在运行
  3. 将net.tcp添加到站点和应用程序的已启用协议中(要从IIS管理器访问“高级设置”选项,您必须具有http绑定)
  4. 运行servicemodelreg.exe -ia以使用IIS注册WCF元素
  5. 运行aspnet_regiis.exe -i以确保使用IIS
  6. 正确设置.NET
  7. 将net.tcp绑定添加到网站

答案 1 :(得分:0)

您是否检查过启用了端口共享?

请参阅http://msdn.microsoft.com/en-us/library/ms734772.aspx

编辑 - 对于WAS,还需要另一项服务:

除了NetTcpPortSharing之外,还需要服务NetTcpActivator ...

请参阅http://msdn.microsoft.com/en-us/magazine/cc163357.aspx