Как разместить службу WCF в веб-приложении с привязкой NetNamedPipeBinding и была в Windows Vista

#wcf #windows-vista #was #netnamedpipebinding

#wcf #windows-vista #было #привязка netnamedpipebinding

Вопрос:

Я пытаюсь разместить службу WCF с привязкой NetNamedPipeBinding в веб-приложении на компьютере Vista.

Я включил активацию службы без HTTP, как описано в этой статье: http://msdn.microsoft.com/en-us/library/ms731053.aspx

Я настроил службу следующим образом:

 <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>
  

Когда я просматриваю файл .svc (в IIS, а не на веб-сервере Visual Studio), я получаю это сообщение:

 [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, Booleanamp; completedSynchronously)  75
  

Я надеялся на более быстрое и простое развертывание с использованием WAS, но это исключение не помогает. Знает ли кто-нибудь, делаю ли я что-то неправильно?

Ответ №1:

Вы точно следовали этой статье или вы заменили экземпляры ‘net.tcp’ в командной строке на ‘net.pipe’? Возможно, вы просто не включили привязку net.pipe для этого веб-сайта и вашего виртуального каталога.

Комментарии:

1. Привет, я проигнорировал материал net.tcp, потому что думал, что это не имеет отношения к net.pipe. Но, по-видимому, мне нужно включить привязку net.pipe для моего веб-сайта. Сейчас я этим занимаюсь.

2. Как ни странно, в статье «как настроить WAS» не упоминается настройка привязки net.pipe. Но объясняется в этом примере статьи: msdn.microsoft.com/en-us/library/ms752253.aspx