У меня есть контракт на обслуживание 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>
.