2009-08-28 2 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

+0

Я только сказал это, потому что это стоило мне около двадцати минут на днях :) – spender

+0

У вас нет конечной точки mex, когда вы идете добавить ссылку на службу в визуальной студии, можете ли вы просто дайте ему адрес net.tcp? – Matt

1

Вы можете до Enable the Net.TCP Port Sharing Service. Цитата из MSDN:

Windows Communication Foundation (WCF) использует службу Windows, называется Net.Tcp Port Sharing Service для облегчения обмена портов TCP между несколькими процессами. Эта услуга установлена ​​как часть WCF, , но служба не включена по умолчанию по умолчанию в качестве меры предосторожности и , поэтому ее необходимо включить вручную до использования . В этом разделе описывается, как настроить общий доступ к TCP-портам Сервис с помощью оснастки консоли управления (MMC) Microsoft Management .

Удачи вам!

0

Попробуйте использовать разные номера портов для привязки http и net.tcp. Совместное использование портов имеет другую цель: совместно использовать один и тот же порт net.tcp среди нескольких процессов.

Смежные вопросы