Проблемы с подключением к службе WCF через NetNamedPipeBinding - PullRequest
0 голосов
/ 26 мая 2010

У меня проблемы с выяснением, как заставить работать службу WCF с именованным каналом. Сервис находится в отдельной сборке из исполняемого файла.

Конфиг выглядит так:

  <system.serviceModel>
    <bindings>
      <netNamedPipeBinding>
        <binding name="NoSecurityIPC">
          <security mode="None" />
        </binding>
      </netNamedPipeBinding>
    </bindings>
    <client>
      <endpoint name="internal"
        address="net.pipe://localhost/"
        binding="netNamedPipeBinding"
        bindingConfiguration="NoSecurityIPC"
        contract="TimeService.ITimeService" />
    </client>
    <services>
      <service name="TimeService">
        <host>
          <baseAddresses>
            <add baseAddress="net.pipe://localhost/" />
          </baseAddresses>
        </host>            
        <endpoint name="internal"
          address="net.pipe://localhost/"
          binding="netNamedPipeBinding"
          bindingConfiguration="NoSecurityIPC"
          contract="TimeService.ITimeService" />
      </service>
    </services>
  </system.serviceModel>

Я использую ChannelFactory для создания прокси для доступа к хосту службы:

ServiceHost h = new ServiceHost(typeof(TimeService), new Uri("net.pipe://localhost/"));
h.AddServiceEndpoint(typeof(ITimeService), new NetNamedPipeBinding("NoSecurityIPC"), "");
h.Open();

ChannelFactory<ITimeService> factory = new ChannelFactory<ITimeService>("internal");

ICpTimeService proxy = factory.CreateChannel();

using (proxy as IDisposable)
{                
    this.ds = proxy.LoadData();
}

Я не уверен, что делаю неправильно, когда создаю ChannelFactory. Это не может найти "канал1" в конфигурации. Когда я создаю привязку вручную и передаю ее конструктору ChannelFactory, фабрика и прокси-сервер создаются, но вызов LoadData () завершается неудачно (время ожидания истекло).

Кто-нибудь может увидеть, что я здесь делаю не так?

РЕДАКТИРОВАТЬ: я отредактировал выше app.config, чтобы убедиться, что обе конечные точки имеют одинаковые данные. Это устранило мою проблему на канале. однако вызов метода обслуживания, как описано выше, по-прежнему истекает.

1 Ответ

0 голосов
/ 29 апреля 2011

Я не вижу описания проблемы, как в фактическом сообщении об ошибке, поэтому трудно угадать, в чем ваша проблема. Возможно ли, что вы пытаетесь запустить это под учетной записью без прав администратора? В настоящее время у меня возникают проблемы с получением WCF с NetNamedPipeBinding в виде IPC под учетными записями пользователей без прав администратора в Windows 7. Возможно, у вас возникла такая же проблема?

...