2009-08-28 98 views
2

工作,下面是我的app.config麻烦WCF与NetTcpBinding的

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service name="Indexer"> 
     <endpoint address="net.tcp://localhost:8000/Indexer/" binding="netTcpBinding" 
      bindingConfiguration="TransactionalTCP" contract="Me.IIndexer" /> 
     </service> 
     <service name = "Indexer" behaviorConfiguration = "MEXGET"> 
     <host> 
      <baseAddresses> 
      <add baseAddress = "http://localhost:8000/"/> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name = "MEXGET"> 
      <serviceMetadata httpGetEnabled = "true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <netTcpBinding> 
     <binding name="TransactionalTCP" 
      transactionFlow="true" 
     /> 
     </netTcpBinding> 
    </bindings> 
    </system.serviceModel> 
</configuration> 

出于某种原因,我不能去,我运行此机器上的WCF服务。 任何一个可以发现错误?我有netTcpBinding服务启动并运行。

当我有同样运行在HTTP它是工作的罚款与以下config文件

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="IndexerServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/Indexer/"/> 
      <serviceDebug includeExceptionDetailInFaults="True" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="Indexer" behaviorConfiguration="IndexerServiceBehavior"> 
     <endpoint address="http://localhost:8080/Indexer/" binding="basicHttpBinding" 
      bindingConfiguration="" name="HTTP" contract="IIndexer" /> 
     <endpoint address="http://localhost:8080/Indexer/MEX/" binding="mexHttpBinding" 
      bindingConfiguration="" name="MEX" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 

我真的不能找出我在做什么错..

回答

3

你当然打开防火墙让它听?

如果它的任何使用,这里是我成功地使用就在不久前的结合:

<services> 

    <service name="MyService.MySearch" behaviorConfiguration="ServiceBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://mypc:8003/MyService"/> 
     </baseAddresses> 
    </host> 
    <endpoint bindingConfiguration="Binding1" 
       binding="netTcpBinding" 
       contract="MyService.IMySearch" 
       address="net.tcp://mypc:8004/MyService" /> 
    </service> 
</services> 
<bindings> 
    <netTcpBinding> 
    <binding name="Binding1" 
      hostNameComparisonMode="StrongWildcard" 
      sendTimeout="00:10:00" 
      maxReceivedMessageSize="65536" 
      transferMode="Buffered" 
      portSharingEnabled="false"> 
     <security mode="None"> 
     <transport clientCredentialType="None" /> 
     <message clientCredentialType="None" /> 
     </security> 
    </binding> 
    </netTcpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

有这个绑定没有安全。

+0

是的,我已经这样做了:-) – Matt 2009-08-28 03:47:17

+0

我只说了,因为它花费了我大约二十分钟的那一天:) – spender 2009-08-28 03:52:44

+0

啊你没有mex端点,当你在visual studio中添加服务引用时,你能只要给它net.tcp地址? – Matt 2009-08-28 04:03:09

1

您可能必须Enable the Net.TCP Port Sharing Service。从MSDN报价:

Windows通讯基础(WCF) 使用Windows服务称为 Net.Tcp端口共享服务,以方便 TCP端口 跨越多个进程共享。此 服务作为WCF的一部分安装, ,但该服务未启用,默认为 作为安全预防措施,因此必须在首次使用 之前手动启用服务 。本主题介绍如何使用Microsoft Management 控制台(MMC)管理单元配置网络TCP端口共享 服务 。

祝你好运!

0

尝试为http和net.tcp绑定使用不同的端口号。端口共享有不同的目的,在多个进程中共享相同的net.tcp端口。