WCF "Всегда генерировать контракты сообщений" не генерирует MessageContract

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

Я получил это работать таким образом, добавив MessageContract атрибут в классе основного контейнера, что хорошо, потому что WCF создает их как частичные классы, что означает, что я могу украсить свою часть и оставить созданную часть в покое. Однако, чтобы правильно десериализовать свойства в главном классе контейнера, я должен украсить их MessageBodyMember атрибуты, которые определяют пространство имен.

Это, очевидно, плохая вещь®, поскольку это означает, что каждый раз, когда я восстанавливаюсь из WSDL, я теряю способность получать сообщения от клиента. Я уже установил "Всегда генерировать контракты сообщений" в конфигурации ссылок на сервисы, но, похоже, это ложь - контракты сообщений не генерируются, независимо от того, оставляю ли я свой частичный класс, украшенный MessageContract или нет.

Есть ли способ, которым я могу заставить WCF генерировать эти MessageContracts?

РЕДАКТИРОВАТЬ

Я не уверен, уместно ли это, но когда svcutil генерирует прокси-класс, он украшает свойства

[XmlElement(Order=0)]
//Property definition

И когда я добавлю MessageContract приписать сервис разрывы с сообщением

Явное упорядочение не может использоваться для параметров или возвращаемых значений. Пожалуйста, удалите свойство Order из пользовательских атрибутов.

Я должен удалить все директивы Order из сгенерированного XmlElement атрибуты, прежде чем я могу успешно позвонить в службу.

1 ответ

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

Другие вопросы по тегам