Как убедить сериализатор контрактов данных WCF в том, что WSDL является документом / освещенным / упакованным

Я пытался следовать указаниям на http://blogs.msdn.com/b/donsmith/archive/2006/10/06/handcrafting-wcf_2d00_friendly-wsdls.aspx для создания WSDL, в который верит svcutil WCF. формат документа / литерала. При этом svcutil должен сгенерировать интерфейс службы и прокси-код в C#, который использует сериализатор контракта данных и OperationContractAttributes для операций оболочки. Вместо этого я получаю странную двойную упаковку с классами BlahResponse1, вложенными в выражения BlahResponse, и svcutil сообщает мне, что WSDL не упакован и что он создаст MessageContracts, а не OperationContracts.

Ради читабельности кода моими потребителями сервисов я хочу избавиться от класса BlahResponse1 и убедить svcutil, что WSDL упакован. Как это сделать? Может быть, как это не сделать?

Я видел предложения установить nillable="true" для некоторых, но не для всех элементов схемы, которые станут контрактом данных. Который должен быть нилбл и почему? Будут ли когда-нибудь нужны элементы, которые не могут быть nillable, где установка nillable="true" плохая?

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

Я бы включил схемы /WSDL, но они являются проприетарными. Кроме того, очень большой и распространяется по многим файлам.

1 ответ

XMLSpy создает части сообщения с именем по умолчанию "параметр". Это почти то, что нужно.NET svcutil.exe для автоматической генерации контрактов на данные и рабочих контрактов. Svcutil.exe требует, чтобы все части сообщения были названы "параметрами" (обратите внимание на добавленные "s" в конце).

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