Доброе утро!
Хочу по wsdl и xsd файлам с помощью wsdl.exe сгенерить cs-код.
Моя цель — сделать серверную реализацию по предоставленному wsdl файлу (с клиентской проблем нет — VS все успешно генерит).
Но постоянно получаю ошибку:
E:\ref\wsdl4test>wsdl webservice.wsdl
Microsoft (R) Web Services Description Language Utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.
Error: Не удается импортировать привязку "MemberWebServiceSoap" из пространства
имен "http://www.services.ru/IntegrationServices/MemberServices/".
- Не удается импортировать операцию "CreateNewUser".
- Отсутствует элемент "http://www.services.ru/IntegrationServices/MemberServic
esSchema:NewMemberProfileRequest".
Как будто утилита wsdl.exe не делает команды import. Visual Studio же спокойно подключает этот wsdl, затем можно пользоваться сгенеренными объектами с параметрами из xsd.
Не поможете разобраться в чем может быть дело?
Вот WebService.wsdl:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://www.services.ru/IntegrationServices/MemberServices/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://www.services.ru/IntegrationServices/MemberServices/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:member="http://www.services.ru/IntegrationServices/MemberServicesSchema">
<wsdl:types>
<xsd:schema xmlns:member="http://www.services.ru/IntegrationServices/MemberServicesSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.services.ru/IntegrationServices/MemberServicesSchema" schemaLocation="WebService.xsd" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="CreateNewUserSoapIn">
<wsdl:part name="parameters" element="member:NewMemberProfileRequest" />
</wsdl:message>
<wsdl:message name="CreateNewUserSoapOut">
<wsdl:part name="parameters" element="member:NewMemberProfileResponse" />
</wsdl:message>
<wsdl:message name="UpdateExistingUserSoapIn">
<wsdl:part name="parameters" element="member:UpdateMemberProfileRequest" />
</wsdl:message>
<wsdl:message name="UpdateExistingUserSoapOut">
<wsdl:part name="parameters" element="member:UpdateMemberProfileResponse" />
</wsdl:message>
<wsdl:portType name="MemberWebServiceSoap">
<wsdl:operation name="CreateNewUser">
<wsdl:input message="tns:CreateNewUserSoapIn" />
<wsdl:output message="tns:CreateNewUserSoapOut" />
</wsdl:operation>
<wsdl:operation name="UpdateExistingUser">
<wsdl:input message="tns:UpdateExistingUserSoapIn" />
<wsdl:output message="tns:UpdateExistingUserSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="MemberWebServiceSoap" type="tns:MemberWebServiceSoap">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="CreateNewUser">
<soap:operation soapAction="http://www.services.ru/IntegrationServices/MemberServices/CreateNewUser" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="UpdateExistingUser">
<soap:operation soapAction="http://www.services.ru/IntegrationServices/MemberServices/UpdateExistingUser" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="MemberWebService">
<wsdl:port binding="tns:MemberWebServiceSoap" name="MemberWebServiceSoap">
<soap:address location="https://localhost/webapp/wcs/services/MemberWebService" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Вот WebService.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.services.ru/IntegrationServices/MemberServicesSchema"
xmlns:tns="http://www.services.ru/IntegrationServices/MemberServicesSchema">
<xs:element name="NewMemberProfileRequest" type="tns:MemberProfileDetails" />
<xs:element name="NewMemberProfileResponse" type="tns:MemberProfileServiceResponse" />
<xs:element name="UpdateMemberProfileRequest" type="tns:MemberProfileDetails" />
<xs:element name="UpdateMemberProfileResponse" type="tns:MemberProfileServiceResponse"/>
<xs:complexType name="MemberProfileDetails">
<xs:sequence>
<xs:element name="LogonId" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="FirstName" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="LastName" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="PhoneNumber" minOccurs="1" maxOccurs="1" type="xs:string"/>
<xs:element name="Email" minOccurs="1" maxOccurs="1" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MemberProfileServiceResponse">
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="OperationStatus" type="tns:OperationStatusType"/>
<xs:element minOccurs="0" maxOccurs="1" name="Error" type="tns:ErrorType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="OperationStatusType">
<xs:restriction base="xs:string">
<xs:enumeration value="SUCCESS"/>
<xs:enumeration value="FAILURE"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ErrorType">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="1" name="ErrorCode" type="xs:string"/>
<xs:element maxOccurs="1" minOccurs="1" name="ErrorDescription" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Утилита wsdl я нашел у себя в C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin