svcutil from wsdl file: Error Schema with target namespace could not be found

J Cooper picture J Cooper · Jul 27, 2011 · Viewed 14.3k times · Source

On my machine I have a WSDL file and all the necessary schema files. I am trying to use svcutil to create client proxy code from the WSDL. Command:

svcutil myfile.wsdl

I keep getting an error when using svcutil, but have no problems when loading the wsdl with soapUI if that means anything.

I keep getting this error:

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://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0']/wsdl:portType[@name='areventservice']

Here is the WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    name="areventservice"
    targetNamespace="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
    xmlns:tns="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
    xmlns:es="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0">



    <wsdl:types>
        <xsd:schema targetNamespace="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
                    xmlns:tns="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
                    xmlns:es="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0">

            <xsd:include schemaLocation="arevent-service.xsd"/>
        </xsd:schema>
    </wsdl:types>

    <wsdl:message name="SaveAREventWithShortNames">
        <wsdl:part element="es:save-arevent-with-shortnames" name="SaveAREventWithShortNames"/>
    </wsdl:message>

    <wsdl:message name="RetrieveAREventByConsumerIdentifier">
        <wsdl:part element="es:retrieve-arevent-by-consumer-agency-identifier" name="RetrieveAREventByConsumerIdentifier"/>
    </wsdl:message>

    <wsdl:message name="RetrieveAREventByConsumerAccountIdentifier">
        <wsdl:part element="es:retrieve-arevent-by-consumer-account-agency-identifier" name="RetrieveAREventByConsumerAccountIdentifier"/>
    </wsdl:message>

    <wsdl:message name="RetrieveAREventResponse">
        <wsdl:part element="es:retrieve-arevent-response" name="RetrieveAREventResponse"/>
    </wsdl:message>

    <wsdl:message name="SaveAREventResponse">
        <wsdl:part element="es:save-arevent-response" name="SaveAREventResponse"/>
    </wsdl:message>

    <wsdl:portType name="areventservice">
        <wsdl:operation name="SaveAREventWithShortNames">
            <wsdl:input message="tns:SaveAREventWithShortNames" name="SaveAREventWithShortNames"/>
            <wsdl:output message="tns:SaveAREventResponse" name="SaveAREventResponse"/>         
        </wsdl:operation>
        <wsdl:operation name="RetrieveAREventByConsumerIdentifier">
            <wsdl:input message="tns:RetrieveAREventByConsumerIdentifier" name="RetrieveAREventByConsumerIdentifier"/>
            <wsdl:output message="tns:RetrieveAREventResponse" name="RetrieveAREventResponse"/>
        </wsdl:operation>
        <wsdl:operation name="RetrieveAREventByConsumerAccountIdentifier">
            <wsdl:input message="tns:RetrieveAREventByConsumerAccountIdentifier" name="RetrieveAREventByConsumerAccountIdentifier"/>
            <wsdl:output message="tns:RetrieveAREventResponse" name="RetrieveAREventResponseByAccountIdentifier"/>
        </wsdl:operation>
    </wsdl:portType>

Here is the schema file arevent-service.xsd (located in same directory as WSDL):

<?xml version="1.0" encoding="UTF-8"?>
<!-- (C)opyright 2004-2009 by CR Software, LLC - All Rights Reserved  -->


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:as="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
    targetNamespace="http://www.crsoftwareinc.com/xml/ns/titanium/event/areventservice/v1_0"
    xmlns:common="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xs:import 
        schemaLocation="arevent-service-common.xsd" 
        namespace="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0"/>

    <xs:element name="save-arevent-with-shortnames" type="common:save-areventType" />

    <xs:element name="retrieve-arevent-by-consumer-agency-identifier" type="common:retrieve-by-consumer-agency-idType" />

    <xs:element name="retrieve-arevent-by-consumer-account-agency-identifier" type="common:retrieve-by-consumer-account-agency-idType" />

    <xs:element name="retrieve-arevent-response" type="as:retrieve-arevent-responseType" />

    <xs:complexType name="retrieve-arevent-responseType">
        <xs:sequence>                               
            <xs:element name="arevent-page-results" type="common:arevent-page-resultsType" 
                minOccurs="1" maxOccurs="1" >
                <xs:annotation>                      
                    <xs:documentation>
                        arevent page results type
                    </xs:documentation>
                </xs:annotation>                
            </xs:element>
        </xs:sequence>
    </xs:complexType>


    <xs:element name="save-arevent-response" type="as:save-arevent-responseType" />

    <xs:complexType name="save-arevent-responseType">
        <xs:sequence>                               
            <xs:element name="arevent" type="common:areventType"
                minOccurs="1" maxOccurs="1" >
                <xs:annotation>                      
                    <xs:documentation>
                        arevent type
                    </xs:documentation>
                </xs:annotation>                
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

The target namespaces all look like they match to me. Like I said, soapUI has not problem loading the wsdl.

I have no idea what to do.

Answer

John Saunders picture John Saunders · Jul 27, 2011

Either specify the paths to all of the WSDL and schema files on the command line, or else use "Add Service Reference", which will do that for you.

Note that "Add Service Reference" does work with files on your local system - not just for files at a URL.