2009-08-20 3 views
0

Поскольку сервер разработки не поддерживает использование каких-либо привязок помимо HTTP (http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c7f173ea-61dc-4338-8883-60d616adc18f/), то как отлаживать NetNamedPipeBinding?Отладка именованных каналов в WCF

Прямо сейчас, когда я изменяю тип привязки с помощью редактора конфигурации службы Microsoft от basicHttpBinding до netNamedPipeBinding, появляется следующее сообщение об ошибке, когда я пытаюсь нажать F5, чтобы всплывать автоматически созданный инструмент WCF.

System.InvalidOperationException: Не удалось найти базовый адрес, соответствующий схеме net.pipe для конечной точки с привязкой NetNamedPipeBinding. Схемы зарегистрированных базовых адресов: [http]. на System.ServiceModel.ServiceHostBase.MakeAbsoluteUri (Uri relativeOrAbsoluteUri, Связывание связывания, UriSchemeKeyedCollection baseAddresses) в System.ServiceModel.Description.ConfigLoader.LoadServiceDescription (ServiceHostBase хозяина, описание ServiceDescription, ServiceElement serviceElement, Action`1 addBaseAddress) в System.ServiceModel .ServiceHostBase.LoadConfigurationSectionInternal (configLoader configLoader, описание ServiceDescription, ServiceElement serviceSection) на System.ServiceModel.ServiceHostBase.LoadConfigurationSectionInternal (configLoader configLoader, описание ServiceDescription, Строка ConfigurationName) на System.ServiceModel.ServiceHostBase.ApplyConfiguration() в System.ServiceModel. ServiceHostBase.InitializeDescription (UriSchemeKeyedCollection baseAddresses)в System.ServiceModel.ServiceHost.InitializeDescription (тип ServiceType, UriSchemeKeyedCollection baseAddresses) в System.ServiceModel.ServiceHost..ctor (тип ServiceType, Uri [] baseAddresses) в Microsoft.Tools.SvcHost.ServiceHostHelper.CreateServiceHost (Тип, ServiceKind вид) на Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService (ServiceInfo информация)

Config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    </configSections> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <!-- When deploying the service library project, the content of the config file must be added to the host's 
    app.config file. System.Configuration does not support config files for libraries. --> 
    <system.serviceModel> 
    <bindings> 
     <netNamedPipeBinding> 
     <binding name="NewBinding0" /> 
     </netNamedPipeBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="InventoryServiceLibrary.Service1Behavior" 
     name="InventoryServiceLibrary.InventoryService"> 
     <endpoint address="" binding="netNamedPipeBinding" bindingConfiguration="" 
      contract="InventoryServiceLibrary.IInventoryService"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8731/Design_Time_Addresses/InventoryServiceLibrary/Service1/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="InventoryServiceLibrary.Service1Behavior"> 
      <!-- To avoid disclosing metadata information, 
      set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="True"/> 
      <!-- To receive exception details in faults for debugging purposes, 
      set the value below to true. Set to false before deployment 
      to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

Решение Добавить базовый адрес после создания именованного связывания каналов

+1

У вас есть базовый адрес «net.pipe»? –

+1

Я полагаю, что чистые трубы WCF не поддерживают перекрестные машинные вызовы - пытаетесь ли вы это сделать? –

+0

Я не могу найти способ установить net.pipe в Редактор конфигурации. Нет, я хочу только поговорить между двумя процессами на одном компьютере. –

ответ

3

Покажите нам свою конфигурацию! И для клиента, и для сервера.

Сообщение «Не удалось найти базовый адрес, соответствующий схеме net.pipe для конечной точки со связыванием NetNamedPipeBinding». в основном говорит, что все это - казалось бы, как если бы ваш сервер конфигурация делает не содержит конечные точки или базовые адреса, которые используют net.pipe связывания:

<services> 
    <service name="xxxx"> 
     <host> 
      <baseAddresses> 
       <add baseAddress="http://localhost:8000/MyService" /> 
       <add baseAddress="net.tcp://localhost:8100/MyService" /> 
       <add baseAddress="net.pipe://localhost/" /> 

Вам также необходимо указать, по крайней мере один net.pipe конечную точку в вашем сервера, чтобы использовать этот протокол.

Как уже отмечалось, WCF допускает привязку net.pipe только к локальным машинным вызовам, например. вы не можете звонить с одной физической машины на другую. Если вам нужна эта возможность, вместо этого используйте привязку net.tcp.

Marc

1

Вы всегда можете просто использовать Attach To Process вместо прямого запуска в отладчике и присоединить его к хост-процессу.

0

Эти ответы являются вводящими в заблуждение. Если вы являетесь владельцем службы WCF, вам понадобится раздел «Базовый адрес».Однако если вы используете IIS, это не требуется и не используется.

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