Click here to Skip to main content
15,886,110 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: , +
Hi I need help with generating client code from a WSDL, I'm trying to generate client code from a WSDL which references a no-namespace (chameleon) schema, and the tool ( Microsoft Visual C# 2010 express ) is refusing.

Here is the chameleon XSD (ChameleonTests.xsd):

HTML
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    elementFormDefault="unqualified" attributeFormDefault="unqualified"
    version="1.0">

    <xsd:element name="MsgResponse">
        <xsd:complextype>
            <xsd:sequence>
                <xsd:element name="msgResp" type="xsd:string" />
            </xsd:sequence>
        </xsd:complextype>
    </xsd:element>    


    <xsd:element name="MsgRequest">
        <xsd:complextype>
            <xsd:sequence>
                <xsd:element name="text" type="xsd:string"></xsd:element>
            </xsd:sequence>
        </xsd:complextype>
    </xsd:element>

    <xsd:element name="RequestFault">
        <xsd:complextype>
            <xsd:sequence>
                <xsd:element name="description" type="xsd:string">
                </xsd:element>
            </xsd:sequence>
        </xsd:complextype>
    </xsd:element>

</xsd:schema>


and the WSDL (ChameleonTests.wsdl):

HTML
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="#unknown">
	xmlns:tns="http://chameleon.test.com/ChameleonTests/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ChameleonTests"
	targetNamespace="http://chameleon.test.com/ChameleonTests/">

	<wsdl:types>
		<xsd:schema targetnamespace="http://chameleon.test.com/ChameleonTests/" xmlns:xsd="#unknown">
			xmlns:types="http://chameleon.test.com/ChameleonTests/"
			elementFormDefault="qualified">
			<xsd:include schemalocation="ChameleonTests.xsd" />
		</xsd:schema>
	</wsdl:types>

	<wsdl:message name="msgRequest">
		<wsdl:part name="MsgRequest" element="tns:MsgRequest" />
	</wsdl:message>

	<wsdl:message name="msgResponse">
		<wsdl:part name="MsgResponse" element="tns:MsgResponse"></wsdl:part>
	</wsdl:message>

	<wsdl:message name="RequestFaultMessage">
		<wsdl:part name="RequestFault" element="tns:RequestFault"></wsdl:part>
	</wsdl:message>

	<wsdl:porttype name="Communicate">
		<wsdl:operation name="makeCall">
			<wsdl:input message="tns:msgRequest"></wsdl:input>
			<wsdl:output message="tns:msgResponse"></wsdl:output>
			<wsdl:fault name="fault" message="tns:RequestFaultMessage" />
		</wsdl:operation>
	</wsdl:porttype>

	<wsdl:binding name="ChameleonTestsSOAP" type="tns:Communicate">

		<soap:binding style="document">
			transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="makeCall">

			<soap:operation soapaction="http://chameleon.test.com/ChameleonTests/makeCall" />
			<wsdl:input>

				<soap:body use="literal" />
			</wsdl:input>
			<wsdl:output>

				<soap:body use="literal" />
			</wsdl:output>
			<wsdl:fault name="fault">

				<soap:fault use="literal" name="fault" />
			</wsdl:fault>
		</wsdl:operation>
	</soap:binding></wsdl:binding>

	<wsdl:service name="ChameleonTests">
		<wsdl:port binding="tns:ChameleonTestsSOAP" name="Communicate">
			<soap:address location="http://ws.chameleon.test.com/Order" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>


and the error by the studio is:

Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Schema with target namespace 'http://chameleon.test.com/ChameleonTests/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://chameleon.test.com/ChameleonTests/']/wsdl:portType[@name='Communicate']


Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://chameleon.test.com/ChameleonTests/']/wsdl:portType[@name='Communicate']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://chameleon.test.com/ChameleonTests/']/wsdl:binding[@name='ChameleonTestsSOAP']


Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://chameleon.test.com/ChameleonTests/']/wsdl:binding[@name='ChameleonTestsSOAP']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://chameleon.test.com/ChameleonTests/']/wsdl:service[@name='ChameleonTests']/wsdl:port[@name='Communicate']


Thanks
Posted
Updated 5-Oct-11 21:39pm
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900