I have been struggling with this for many days, not even knowing how to solve it. Basically, I have the following WSDL service definition:
<?xml version='1.0' encoding='UTF-8'?><definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://sample.org/schemas/2012" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://sample.org/schemas/2012" name="SampleServiceImplService"> <types> <xsd:schema> <xsd:import namespace="http://sample.org/schemas/2012" schemaLocation="http://localhost:8080/sampleServices_war_exploded/sample?xsd=1"/> </xsd:schema> </types> <message name="ExecuteSample"> <part name="parameters" element="tns:ExecuteSample"/> </message> <message name="ExecuteSampleResponse"> <part name="parameters" element="tns:ExecuteSampleResponse"/> </message> <message name="SampleException"> <part name="fault" element="tns:SampleException"/> </message> <portType name="SampleService"> <operation name="ExecuteSample"> <input wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSampleRequest" message="tns:ExecuteSample"/> <output wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSampleResponse" message="tns:ExecuteSampleResponse"/> <fault message="tns:SampleException" name="SampleException" wsam:Action="http://sample.org/schemas/2012/SampleService/ExecuteSample/Fault/SampleException"/> </operation> </portType> <binding name="SampleServiceImplPortBinding" type="tns:SampleService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <operation name="ExecuteSample"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault name="SampleException"> <soap:fault name="SampleException" use="literal"/> </fault> </operation> </binding> <service name="SampleServiceImplService"> <port name="SampleServiceImplPort" binding="tns:SampleServiceImplPortBinding"> <soap:address location="http://localhost:8080/sampleServices_war_exploded/sample"/> </port> </service> </definitions>
Associated XSD file:
<?xml version='1.0' encoding='UTF-8'?><xs:schema xmlns:tns="http://sample.org/schemas/2012" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://sample.org/schemas/2012"> <xs:element name="ExecuteSample" type="tns:ExecuteSample"/> <xs:element name="ExecuteSampleResponse" type="tns:ExecuteSampleResponse"/> <xs:element name="SampleException" nillable="true" type="tns:faultInfo"/> <xs:complexType name="ExecuteSample"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="0"/> <xs:element name="values"> <xs:complexType> <xs:sequence> <xs:element name="entry" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="key" minOccurs="0" type="xs:string"/> <xs:element name="value" minOccurs="0" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="ExecuteSampleResponse"> <xs:sequence/> </xs:complexType> <xs:complexType name="faultInfo"> <xs:sequence/> </xs:complexType> </xs:schema>
Ok, the documents look great, we define a complexType called ExecuteSample (request type) that contains two members, name and values, the last one is another complex type with an entry called "entry" with key and values.
It is like a dictionary, and actually it is a dictionary. He even uses the βproposedβ way to expose dictionaries with the only difference that is wrapped inside the βentryβ parameter.
Well guess what, WCF svcutil nor biztalk can recognize WSDL. SVCUtil and Visual Studio fail with a very silly error telling me something like:
Warning 1 Custom tool warning: Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter Error: Object reference not set to an instance of an object. XPath to Error Source: //wsdl:definitions[@targetNamespace='http://sample.org/schemas/2012']/wsdl:portType[@name='SampleService'] C:\src\biztalk\ConsoleApplication6\ConsoleApplication6\Service References\ServiceReference1\Reference.svcmap 1 1 ConsoleApplication6
The biztalk WSDL import wizard crashes without an error message, just telling me that something is wrong ...
I tried everything and watched everything possible on the Internet, nothing really pops up. I am desperate and have no idea what the hell is going on, everything looks great, but it doesn't work ...
Strange ... any idea?
source share