Как я могу указать пространство имен контракта в конфигурации XML конечной точки WCF?

StackOverflow https://stackoverflow.com/questions/4688930

Вопрос

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

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

В моем app.config (Клиентская сторона), я настраиваю конечную точку для некоторой службы:

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top