Как указать пространство имен контракта в конфигурации XML конечной точки WCF? - PullRequest
2 голосов
/ 14 января 2011

У меня есть контракт на обслуживание WCF (сильно упрощенный, но обратите внимание на пространство имен, в котором он находится):

namespace Foo.Services.BarService
{
    [ServiceContract]
    interface BarContract {... }
}

В моем app.config (на стороне клиента) я настраиваю конечную точку для некоторыхservice:

<endpoint address="..."
          binding="..."
          contract="Foo.Services.BarService.BarContract" />

Однако это приводит к ошибке, говорящей о том, что в конфигурации клиента, поддерживающей BarService.BarContract, не найдена конечная точка.Я могу избавиться от этой ошибки, только изменив значение атрибута contract на BarService.BarContract (т.е. удалив пространство имен).

Почему это так?Откуда может появиться эта ошибка?Почему я не должен упоминать часть пространства имен типа контракта?Разве это не должно привести к тому, что WCF еще больше не найдет подходящую конечную точку?


Ответ на вопросы в комментарии @Ladislav Mrnka ниже:

  • Я говорю о клиентской стороне.(Я забыл упомянуть этот бит; извините за это.) Может ли эта ошибка происходить со стороны сервера?

  • Я сгенерировал вышеупомянутый контракт на обслуживание вместе с классом BarClient, которыйреализует его с помощью Добавить ссылку на службу в Visual Studio.Я указал URL BarService, который запускается кем-то другим.Здесь я также указал, что служба должна быть помещена в пространство имен Foo.Services.BarService.

  • Я собирался использовать службу напрямую через класс BarClient, автоматически сгенерированный для меня,не через ChannelFactory<BarContract>.

1 Ответ

3 голосов
/ 14 января 2011

Создание клиента с помощью Добавить ссылку на службу не воссоздает структуру пространства имен из службы.Все созданные типы и контракты помещаются в новое пространство имен, определяемое именем ссылки на сервис.Поэтому я думаю, что вы назвали свой сервисный номер BarService.Конфигурация клиента должна соответствовать именам сгенерированных контрактов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...