net.tcp使用.NET 4.0在Windows 7虚拟机上的IIS7.5中托管

时间:2011-02-21 17:29:56

标签: wcf iis net.tcp

我有最简单的WCF服务,当使用basicHttp绑定在IIS中托管时,它可以正常工作。它有一个名为DoNothing的空方法,它不带参数并返回void

void DoNothing()

但是当我尝试使用net.tcp在IIS中托管它时,我无法使其工作。

我假设它是配置,因为无论使用何种绑定,相同的服务代码都应该起作用。

我启用了非http激活。我使用不同的端口12345来避免任何冲突。网站和服务设置为使用net.tcp绑定。

Net.Tcp ListenerAdaptor和Net.Tcp端口共享服务正在运行

我可以获取元数据以使用WcfTestClient来测试服务。

我得到的错误是

套接字连接已中止。这可能是由于处理消息的错误或远程主机超出接收超时或基础网络资源问题引起的。本地套接字超时为'00:00:59.8597984'。

内部异常是

远程主机强行关闭现有连接

我确实检查了一切。我试过在虚拟机上远程和本地调用它

我只能认为这是一个简单的配置错误或安全问题。虚拟机不在域中。我已在虚拟机上完全禁用了防火墙。

是否有人有同样的问题,并且有解决方案。或者有人有一个非常简单(完整)的例子,说明如何在IIS中托管net.tcp服务,他们可以发布

这是我的web.config

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="PortSharingBinding" portSharingEnabled="true">
          <security mode="None"/>
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service name="SimpleNetTcpService.Service">
        <endpoint address="net.tcp://192.168.0.2:12345/SimpleNetTcpService/Service"
          binding="netTcpBinding" bindingConfiguration="PortSharingBinding" 
          contract="SimpleNetTcpService.IService" />

        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。我刚刚从service元素中删除了address属性 是

<service name="SimpleNetTcpService.Service">
        <endpoint address="net.tcp://192.168.0.2:12345/SimpleNetTcpService/Service"
          binding="netTcpBinding" bindingConfiguration="PortSharingBinding" 
          contract="SimpleNetTcpService.IService" />

现在

<service name="SimpleNetTcpService.Service">
        <endpoint 
          binding="netTcpBinding" bindingConfiguration="PortSharingBinding" 
          contract="SimpleNetTcpService.IService" />

现在正常工作