2012-05-28 3 views
2

По какой-то причине я не могу заставить конечную точку Net.Pipe моей службы работать.Ошибка возврата WCF «Не было прослушивания конечных точек в net.pipe ....»

Это сервис. NET 4.0 WCF, размещенный в IIS7.

Есть две ошибки ...

  • Во-первых, ЕР не будет предоставлять мета-данные.
  • Во-вторых, EP на самом деле не работает - я тестирую его через тестовый клиент WCF, который является частью VS2010.

Я думаю, что оба они связаны с одной и той же проблемой.

Фактическая ошибка получили ...

There was no endpoint listening at net.pipe://[machinename].[domainname]/Services/TestService.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.

Первое, что я заметил, что независимо от того, что я называю свою трубку в базу адресов он получает переименован в [имя_компьютера]. [Имя_домена ], который кажется странным. Это видно из данных Meta-сервиса, которые выводятся. Однако, если я использую имя моей трубы или это переименованное имя в тестовом клиенте, это не будет работать.

Я также включил WAS в Windows Features, установил привязки сайтов для всех протоколов в IIS и также ввел имена протоколов в поле «Включенные протоколы» в IIS (http, net.tcp, net. труба). Я также проверил, что «адаптер прослушивателя Net.Pipe» запущен в Windows Servics.

Мои http и net.tcp EP работают нормально и возвращают Meta Data.

My config приведен ниже: есть ли у кого-нибудь идеи, что может остановить этот EP от работы? Я почти уверен, что это что-то простое !!

<system.serviceModel> 
    <behaviors> 
     <!-- EP Behaviors --> 
     <endpointBehaviors> 
     <behavior name="PayloadMessageInspector"> 
      <MessageHeaderBehavior /> 
      <MessagePayloadBehavior /> 
     </behavior> 
     </endpointBehaviors> 
     <!-- Service Behaviors --> 
     <serviceBehaviors> 
     <behavior name="GenericServiceBehavior"> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceMetadata httpGetEnabled="true" policyVersion="Policy15" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <!-- Bindings Section --> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <bindings> 
     <!-- Basic Http Binding --> 
     <basicHttpBinding> 
     <binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760"> 
      <security mode="TransportCredentialOnly"> 
      <transport clientCredentialType="Windows" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 
     <!-- Net TCP Binding --> 
     <netTcpBinding> 
     <binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760" />   
     </netTcpBinding> 
     <!-- Net Pipe Binding --> 
     <netNamedPipeBinding> 
     <binding maxReceivedMessageSize="10485760" maxBufferSize="10485760" maxBufferPoolSize="10485760" /> 
     </netNamedPipeBinding>  
    </bindings> 
    <!-- Services Section --> 
    <services>  
     <!-- Membership Service --> 
     <service name="TestService" behaviorConfiguration="GenericServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost/Services/TestService.svc" /> 
      <add baseAddress="net.tcp://localhost/Services/TestService.svc"/> 
      <add baseAddress="net.pipe://Dev/Services/TestService.svc"/> 
      </baseAddresses> 
     </host> 
     <!-- HTTP --> 
     <endpoint 
      address="" 
      binding="basicHttpBinding" 
      contract="ITestService" name="TestServiceBasicHttp" behaviorConfiguration="PayloadMessageInspector" /> 
     <!-- NetTCP --> 
     <endpoint 
      address="" 
      binding="netTcpBinding" 
      contract="ITestService" name="TestServiceNetTcp" behaviorConfiguration="PayloadMessageInspector" /> 
     <!-- NetPipe --> 
     <endpoint 
      address="" 
      binding="netNamedPipeBinding" 
      contract="ITestService" name="TestServiceNetPipe" behaviorConfiguration="PayloadMessageInspector" /> 
     <!-- Mex (Net.Tcp/Net.Pipe) --> 
     <endpoint name="TestServiceNetTcpMex" address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> 
     <endpoint name="TestServiceNetPipeMex" address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <!-- Extensions --> 
    <extensions> 
     <behaviorExtensions> 
     <add name="MessageHeaderBehavior" type="ServiceMessageHeaderBehavior, TestService.Logging" /> 
     <add name="MessagePayloadBehavior" type="ServiceMessagePayloadBehavior, TestService.Logging" /> 
     </behaviorExtensions> 
    </extensions> 
    </system.serviceModel> 

ответ

1

Тестовый клиент WCF был в состоянии видеть мою имя конечной точки трубы после того, как я добавил следующую MEX конечной точки:

Глядя на конфигурации, что тестовый клиент генерируемой, я обнаружил, что неверный адрес конечной точки моего клиента. Это закончило работать для меня ...

net.pipe://localhost/{webapproot}/{path}/ServiceName.svc/{relativeaddress} 

Я надеюсь, что это кому-то поможет.