генерировать класс данных из XSD для использования между сервисом wcf и клиентом? - PullRequest
1 голос
/ 06 июня 2011

Я использовал xsd.exe для генерации класса данных, но wcf не любит, чтобы класс данных обменивался, и выдает ошибку

"Произошла ошибка при попытке сериализации параметра http://tempuri.org/:orderItems. Сообщение InnerException было «Тип» Store.Schemas.Order »с именем контракта данных« Заказ: http://schemas.datacontract.org/2004/07/Store.Schemas' не ожидается. Добавьте любые типы, которые не известны статически, в список известных типов - например, с помощьюатрибут KnownTypeAttribute или путем добавления их в список известных типов, передаваемых в DataContractSerializer. '. Дополнительные сведения см. в разделе InnerException. "

Существует множество классов, основанных на XSD.Что касается MSDN, в нем говорится http://msdn.microsoft.com/en-us/library/ms751512.aspx, что каждый класс данных должен быть украшен с помощью KnownTypeAttribute, DataContractAttribute, DataMemberAttribute и т. Д.использоваться с сервисом WCF?потому что изменение класса, сгенерированного XSD.exe, не рекомендуется и не является простым процессом.

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

Если вы хотите сгенерировать классы с использованием XSD.exe, вы получите сериализуемый тип данных XML, помеченный всеми этими атрибутами XML, контролирующими его сериализацию XmlSerializer. Wcf по умолчанию использует DataContractSerializer, который не использует те атрибуты, которые используются для описания сериализации. Вы должны переключиться на XmlSerializer, используя атрибут XmlSerializerFormat в вашем сервисе, операции или контракте на обслуживание.

0 голосов
/ 13 июня 2011

http://wscfblue.codeplex.com/ Генератор с открытым исходным кодом решил проблему

0 голосов
/ 06 июня 2011

Полагаю, первый вопрос в том, что у вас также есть wsdl, который ссылается на xsd. если да, то вы можете использовать scvutil.exe и передать путь wsdl и убедиться, что файлы xsd также находятся в том же каталоге, что и файл wsdl. это сгенерирует для вас требуемые классы данных.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...