Имя ссылки на службу WCF отображается как имя контракта (интерфейс), вместо фактического имени службы …?

#wcf #web-services #visual-studio-2010

#wcf #веб-сервисы #visual-studio-2010

Вопрос:

Позвольте мне объяснить немного лучше.

У меня есть решение VS2010, разделенное на 2 проекта: веб-сервис WCF и библиотеку классов, которая использует веб-сервис.

Веб-служба WCF — это простая служба ведения журнала; пространство имен «LogService», служба «LogService», контракт «ILogService».

Когда вы используете утилиту «Добавить ссылку на службу», которая поставляется с VS2010, чтобы добавить ссылку на WCF в проект библиотеки классов-потребителей, вы увидите, что инструмент правильно добавляет ссылку на веб-службу, которую можно вызвать через «LogService.LogServiceClient». Здесь проблем нет.

Теперь у меня есть другое решение; это также разделено на 2 проекта: другой веб-сервис WCF и веб-приложение, которое использует этот новый веб-сервис.

Этот конкретный веб-сервис предоставляет операции, выполняемые с базой данных; пространство имен «BLService», сервис «BLService», контракт «IBLService».

Однако использование той же утилиты «Добавить ссылку на службу» в этом проекте добавляет ссылку, имя клиента которой на самом деле «BLService.IBLServiceClient». Пожалуйста, обратите внимание, что перед именем класса клиента службы стоит буква «I». Утилита, похоже, решила, что она должна использовать имя контракта вместо имени службы для создания класса service client.

Я не понимаю, почему инструмент ведет себя по-разному в обоих решениях. Я попытался проверить все, что мог, из обоих, и я не могу найти существенных различий (по крайней мере, насколько мне известно).

Люди, вы знаете, почему это происходит? Какие вещи я должен проверить и исправить в своем веб-проекте (или где-либо еще в решении), чтобы это странное поведение больше не происходило?

Комментарии:

1. Есть ли у вас [ServiceBehavior(Name =»IBLService»)] в вашем классе BLService или [ServiceContract(Name =»LogService»)] в вашем интерфейсе ILogService?

2. Только что проверил. Нигде не видно [ServiceBehavior], и все атрибуты [ServiceContract] вообще не имеют параметров.