У меня есть несколько сервисных контрактов, представленных поверх WCF, в которых используется несколько контрактов на передачу данных.Услуга предназначена для использования Adobe Flex.Я столкнулся со многими проблемами, заставляя Flex использовать WSDL, созданный сервером.Я использовал процедуру, описанную здесь , чтобы сжать WSDL в один файл (я использовал FlatWsdl, а не WcfExtras, если это важно).
Теперь я получаю кучу ошибок при использованииСобственный инструмент VS2010 wsdl.exe для извлечения моих метаданных.В частности, я получаю следующие ошибки:
1) Schema validation warning: Schema item 'complexType' named
'ArrayOfKeyValueOfSomeKeySomeValuep1alXzIb' from namespace
'http://schemas.microsoft.com/2003/10/Serialization/Arrays' is invalid.
Namespace 'http://My/Wcf/Namespace' is not available to be referenced
in this schema.
2) Schema validation warning: Schema item 'complexType' named 'MyComplexType'
from namespace 'http://My/Wcf/Namespace' is invalid. Namespace
'http://schemas.datacontract.org/2004/07/My.Real.Namespace' is not available
to be referenced in this schema.
Теперь тип словаря ("ArrayOfKeyValueOf ..."), очевидно, определен во внешней схеме, которая не импортируется моим WSDL.Обратите внимание, что SomeKey и SomeValue имеют пространство имен datacontract My / Wcf / Namespace.
Что касается MyComplexType, то странно то, что если я изменю его пространство имен Datacontract на то же пространство имен, которое используется моими службами, серверамии привязки, то ошибка (2) исчезает.Я не могу понять, почему.
То, что я спрашиваю, сводится к двум вопросам:
1) Как я могу добавить директиву импорта внешней схемы в мой WSDL?Я видел некоторые решения онлайн, которые предлагали написать класс-оболочку вокруг контейнеров.Это то, чего я действительно хотел бы избежать.
2) Мне действительно нужно поместить все мои контракты данных в одно пространство имен?У меня нет никаких технических возражений против этого, но будет очень сложно изменить пространство имен всех контрактов данных.Возможно, есть автоматизированный способ достижения этого?
TIA!