У меня есть служба WCF, на которую я хочу, чтобы клиенты могли ссылаться с помощью функции «Добавить ссылку на службу» в Visual Studio. Они смогли распознать конечную точку метаданных, интерфейсы, методы и типы данных отображаются в диалоговом окне «Добавить ссылку на службу», и кажется, что она успешно генерирует прокси-сервер без помех - но при просмотре сгенерированного файла кода или просмотре классов в в объектном браузере отсутствует интерфейс службы, сгенерированный из ServiceContract - представлены только DataContracts. Когда я указываю svcutil на тот же URL-адрес конечной точки из командной строки, сгенерированный файл содержит содержит интерфейсы.
- Сам сервис некоторое время использовался в производстве и, кажется, работает нормально
- Используется настраиваемая привязка, но точно такая же конфигурация привязки (и другие параметры конфигурации) используются другой службой, которая, кажется, работает нормально с добавлением ссылки на службу
- Одна вещь, которая отличается от , заключается в том, что эта служба использует пользовательское поведение (атрибут, полученный из IServiceBehavior). Интерфейс также находится в сборке, отличной от конкретного типа сервиса, хотя и контракты на данные.
Обновление:
Кажется, что причиной проблемы, которую я как-то упустил, является то, что есть FaultContracts для некоторых методов этого интерфейса, и эти FaultContracts ссылаются на тип исключения, который [Serializable], а не [DataContract] (как я думаю, что все, что происходит от исключения, должно быть). Сам тип исключения представлен в сгенерированном коде, но его открытые свойства - нет (ни в svcutil, ни в ASR-генерируемом коде)