Я пытаюсь создать аннотированные классы DataContract на основе моих файлов xsd.Затем эти классы следует использовать в качестве типов данных обмена для моих веб-служб Soap.
В cmd.exe я попытался выполнить команду:
svcutil / dconly loginSoap.xsd /язык: C #
Но происходит сбой со следующей ошибкой:
Ошибка: тип 'loginRequest' в пространстве имен 'http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login' не может быть импортирован.Корневая частица должна быть последовательностью.Либо измените схему, чтобы типы могли сопоставляться с типами контрактов данных, либо используйте ImportXmlType, либо используйте другой сериализатор. Если вы используете опцию / dataContractOnly для импорта типов контрактов данных и получаете это сообщение об ошибке, рассмотрите возможностьиспользуя вместо этого xsd.exe.Типы, созданные xsd.exe, могут использоваться в Windows Communication Foundation после применения атрибута XmlSerializerFormatAttribute в контракте на обслуживание.В качестве альтернативы рассмотрите возможность использования параметра / importXmlTypes для импорта этих типов как типов XML для использования с атрибутом DataContractFormatAttribute в контракте на обслуживание.
Ошибка: тип 'loginRequest' в пространстве имен 'http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login' не может быть импортирован.Корневая частица должна быть последовательностью.Либо измените схему, чтобы типы могли сопоставляться с типами контрактов данных, либо используйте ImportXmlType, либо используйте другой сериализатор.
Если вы используете опцию / dataContractOnly для импорта типов контрактов данных и получаете это сообщение об ошибке, рассмотрите возможностьиспользуя вместо этого xsd.exe.Типы, созданные xsd.exe, могут использоваться в Windows Communication Foundation после применения атрибута XmlSerializerFormatAttribute в контракте на обслуживание.В качестве альтернативы рассмотрите возможность использования параметра / importXmlTypes для импорта этих типов как типов XML для использования с атрибутом DataContractFormatAttribute в контракте на обслуживание.
Мой xsd-файл:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login" targetNamespace="http://www.megatravel.xyz/XMLSchema/XMLSchemaSoap/Login" elementFormDefault="qualified"> <xs:element name="loginRequest"> <xs:complexType> <xs:all> <xs:element name="username" type="xs:string"/> <xs:element name="password" type="xs:string"/> </xs:all> </xs:complexType> </xs:element> <xs:element name="loginResponse"> <xs:complexType> <xs:sequence> <xs:element name="message" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Ошибка указывает вам правильное направление.
Просто замените <xs:all> на <xs:sequence>
<xs:all>
<xs:sequence>
или используйте XSD.exe с /classes
/classes