2009-08-25 7 views
4

J'essaye d'héberger un service WCF avec netNamedPipeBinding dans une application web sur une machine Vista.Comment héberger un service WCF dans une application Web avec netNamedPipeBinding et WAS sous Windows Vista

Je permis à l'activation du service non-HTTP comme décrit dans cet article: http://msdn.microsoft.com/en-us/library/ms731053.aspx

J'ai configuré le service comme suit:

<endpoint address="net.pipe://myservice" 
binding="netNamedPipeBinding" 
bindingConfiguration="MyService_NamedPipeBindingConfig" 
contract="ICMyService" /> 

<netNamedPipeBinding> 
    <binding name="MyService_NamedPipeBindingConfig" 
     maxBufferSize="2147483647" 
     maxReceivedMessageSize="2147483647"> 
     <security mode="None"> 
      <transport protectionLevel="None" /> 
     </security> 
    </binding> 
</netNamedPipeBinding> 

Lorsque je navigue dans le fichier .svc (sur IIS, non le serveur Web de Visual studio) Je reçois ce message:

[InvalidOperationException: The protocol 'net.pipe' is not supported.] 
    System.ServiceModel.Activation.HostedTransportConfigurationManager.InternalGetConfiguration(String scheme) +11461251 
    System.ServiceModel.Channels.TransportChannelListener.OnOpening() +84 
    System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +229 
    System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +72 

[InvalidOperationException: The ChannelDispatcher at 'net.pipe://myservice' with contract(s) '"IMyService"' is unable to open its IChannelListener.] 
    System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout) +118 
    System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +261 
    System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +107 
    System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +261 
    System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +121 
    System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +479 

[ServiceActivationException: The service '/myservicehost/myservice.svc' cannot be activated due to an exception during compilation. The exception message is: The ChannelDispatcher at 'net.pipe://myservice' with contract(s) '"IMyService"' is unable to open its IChannelListener..] 
    System.ServiceModel.AsyncResult.End(IAsyncResult result) +11536522 
    System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +194 
    System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) +176 
    System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +278 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 

J'espérais pour un déploiement plus rapide et plus facile en utilisant WAS, mais cette exception n'est pas helpin g. Est-ce que n'importe quel corps sait si je fais quelque chose de mal?

Répondre

5

Avez-vous suivi cet article exactement, ou avez-vous remplacé les instances de 'net.tcp' dans les lignes de commande par 'net.pipe'? Il se peut que vous n'ayez pas activé la liaison net.pipe pour ce site Web et votre répertoire virtuel.

+0

Salut, j'ai ignoré les trucs net.tcp parce que je pensais que ce n'était pas pertinent pour net.pipe. Mais apparemment, je dois activer la liaison net.pipe pour mon site web. Je suis dessus maintenant. – veertien

+0

Oui, ça a fait l'affaire! Cela fonctionne maintenant, merci! – veertien

+0

Curieusement, l'article "comment configurer WAS" ne met pas en place une liaison net.pipe. Mais est expliqué dans cet article d'exemple: http://msdn.microsoft.com/en-us/library/ms752253.aspx – veertien

Questions connexes