Я пытаюсь создать аннотированные классы DataContract на основе моих файлов xsd. Затем эти классы следует использовать в качестве типов данных обмена для моих веб-служб Soap.
В cmd.exe пробовал запустить команду:
svcutil/dconlyloginSoap.xsd/язык: C#
Но он терпит неудачу со следующей ошибкой:
Ошибка: введите «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>