Я пытаюсь использовать сервис WCF в библиотеке классов путем добавления сервисной ссылки на него. В одной из библиотек классов это используется правильно, и я могу получить доступ к клиентским типам для генерации прокси прочь их. Однако в моей библиотеке второго класса (или даже в консольном тестовом приложении), когда я добавляю ту же сервисную ссылку, она только выставляет типы, которые вовлечены в операции контракта а не клиентский тип для меня для генерации прокси против.
например, Конечная точка имеет 2 подвергнутые сервиса - ISvc1 и ISvc2. Когда я добавляю сервисную ссылку на эту конечную точку в библиотеке первого класса, я заставляю ISvc1Client andf ISvc2Client генерировать прокси прочь того, для использования операций, выставленных по тем 2 контрактам. В дополнение к этим клиентам сервисная ссылка также выставляет типы, вовлеченные в операции как (тип 1, тип 2 и т.д.), это - то, в чем я нуждаюсь. Однако, когда я пытаюсь добавить сервисную ссылку на тот же endpoing в другом консольном приложении или библиотеке классов только Тип 1, Тип 2 и т.д. выставляется и не ISvc1Client и ISvc2Client, из-за которого я не могу генерировать прокси для доступа к операциям, в которых я нуждаюсь. Я не могу определить, почему сервисная ссылка правильно сгенерирована в одной библиотеке классов, но не в другой или тестовое консольное приложение.
Очевидно, вам нужно добавить ссылку на System.Web в свой проект перед добавлением ссылки на службу. Это сделало это.
Настоящий ответ таков: если вы сериализуете тип, используя атрибут KnownTypeAttribute в контракте службы, вы ДОЛЖНЫ включите ссылку на библиотеку вашего типа в проект, в который вы добавляете ссылку на службу.
Например, если ваша служба wcf сериализует тип System.Drawing.Image, то потребительский проект ДОЛЖЕН иметь ссылку на System.Drawing. Надеюсь, это поможет некоторым людям.