Я импортирую WSDL как определение службы (входящий в мою службу), и по какой-то причине клиент форматирует запрос так, что WCF не может десериализовать его без прокси-классов, имеющих декорации MessageContract
.
Я заставил его работать таким образом, добавив атрибут MessageContract
в основной класс контейнера, что хорошо, потому что WCF создает их как частичные классы, что означает, что я могу декорировать свою часть и оставить сгенерированныйчасть одна.Однако, чтобы правильно десериализовать свойства основного класса контейнера, я должен украсить их атрибутами MessageBodyMember
, которые задают пространство имен.
Это, очевидно, Bad Thing®, поскольку это означает, что каждый разЯ восстанавливаю из WSDL, я собираюсь потерять способность получать сообщения от клиента.Я уже установил «Всегда генерировать контракты сообщений» в конфигурации ссылок на сервисы, но, похоже, это ложь - контракты сообщений не генерируются, независимо от того, оставляю ли я свой частичный класс с MessageContract
или нет.
Можно ли как-нибудь заставить WCF генерировать эти MessageContract
s?
EDIT
Я не уверен, уместно ли это, но когдаsvcutil генерирует прокси-класс, декорирует свойства с помощью
[XmlElement(Order=0)]
//Property definition
. И когда я добавляю атрибут MessageContract
, сервис прерывается сообщением
Явное секвенирование может не использоватьсяна параметры или возвращаемые значения.Удалите свойство Order из пользовательских атрибутов.
Мне необходимо удалить все директивы Order из сгенерированных атрибутов XmlElement
, прежде чем я смогу успешно вызвать службу.