2012-06-27 10 views
5

Sto provando a configurare i binding net.pipe sul server tra 2 processi (nella stessa casella). Tutto questo funziona localmente in Windows 7, ma sul server di produzione (Windows Server 2008 R2), non funziona.Impossibile ottenere il binding net.pipe che funziona in IIS7.5 su Windows Server 2008 R2

posso verificare che ho:

  • Aggiunto un net.pipe legame con il "Sito Web" IIS (aggiunto * come l'informazione).
  • Aggiunto net.pipe all'elenco di collegamenti in "impostazioni avanzate" per IIS "Sito Web".

Questo è tutto ciò che era necessario sulla mia macchina di sviluppo. C'è qualcos'altro che devo fare?

L'errore che ottengo è da un semplice client console Test App:

Eccezione non gestita: System.ServiceModel.EndpointNotFoundException: Non c'era nessun punto finale ascolto a net.pipe: //nameOfService.svc che potrebbe accettare il messaggio. Questo è spesso causato da un indirizzo errato o un'azione SOAP. Vedi InnerException, se presente, per maggiori dettagli. ---> System.IO.PipeException: 'net.pipe: //nameOfService.svc' L'endpoint tubo non è stato trovato sul machine.` locale

Ecco alcune configurazioni:

Cliente:

<system.serviceModel> 
    <bindings> 
     <netNamedPipeBinding> 
      <binding name="NetNamedPipeBinding_IWebAppNotifyService"> 
       <security mode="None" /> 
      </binding> 
     </netNamedPipeBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.pipe://nameOfService.svc" 
      binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IWebAppNotifyService" 
      contract="ServiceReference2.IWebAppNotifyService" name="NetNamedPipeBinding_IWebAppNotifyService" /> 
    </client> 
</system.serviceModel> 

Server:

<bindings> 
    <netNamedPipeBinding> 
    <binding name="WebAppNotifyServiceBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     </security> 
    </binding> 
    <binding name="ScannerManagerCommandBinding"> 
     <security mode="None" /> 
    </binding> 
    </netNamedPipeBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="WebAppNotifyServiceBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="True" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="MonitoringApp.Notifier.WebAppNotifyService" behaviorConfiguration="WebAppNotifyServiceBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.pipe://nameOfService.svc" /> 
     <add baseAddress="http://nameOfService" /> 
     </baseAddresses> 
    </host> 
    <endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="WebAppNotifyServiceBinding" contract="X.Y.IWebAppNotifyService" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

Aggiornamento:

012.

Il pool di applicazioni associato al sito Web che ospita il binding net.pipe è in esecuzione con l'utente "NetworkService", se ciò fa la differenza.

mi hanno permesso di attivazione non HTTP in Windows Features per NET 3.5.1, anche se questo è in esecuzione in .NET 4.

+0

In Funzionalità di Windows, avete attivato Windows Communication Foundation non-HTTP di attivazione? –

+0

Hai provato a utilizzare WCFTestClient.strumento exe per verificare il tuo servizio? –

+0

Un altro pensiero: come ricorderò, baseAddress dovrebbe seguire questo formato: {PROTOCOL}: // SERVER_NAME/SERVICE_NAME, ho ragione? –

risposta

7
  • Avete permesso ai servizi di Windows Net.Pipe Listener Adapter e Windows Process Activation Service?
  • Hai abilitato il binding net.pipe a livello di sito?
  • Hai aggiunto il protocollo net.pipe a livello di vdir?
+0

AAAAAAGHHHHHHHHH !!!! Era il servizio listener net.pipe :) Grazie mille, sembra che questo sia disabilitato di default su win server 2008, il che avrebbe senso. –

+0

@MattRoberts: sono contento! :) Ho affrontato un problema simile con net.msmq. Listener Adapter attiva i servizi Web tramite il servizio di attivazione dei processi. Entrambi dovrebbero essere in esecuzione. – abatishchev

Problemi correlati