svcutil из файла wsdl: не удалось найти схему ошибки с целевым пространством имен

На моей машине есть файл WSDL и все необходимые файлы схемы. Я пытаюсь использовать svcutil для создания клиентского прокси-кода из WSDL. Команда:

svcutil myfile.wsdl

Я продолжаю получать сообщение об ошибке при использовании svcutil, но у меня нет проблем при загрузке wsdl с soapUI, если это что-то значит.

Я продолжаю получать эту ошибку:

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']

Вот 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>

Вот файл схемы arevent-service.xsd (находится в том же каталоге, что и 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>

Все целевые пространства имен выглядят так, как будто они соответствуют мне. Как я уже сказал, у soapUI нет проблем с загрузкой файла wsdl.

Я понятия не имею, что делать.


person J Cooper    schedule 27.07.2011    source источник
comment
Попробуйте указать пути ко всем схемам после пути к WSDL. Это то, что вам нужно сделать со старым WSDL.EXE.   -  person John Saunders    schedule 27.07.2011
comment
чувак, у меня около 40 схем, на которые есть ссылки. Я попробовал первые несколько, и, похоже, по крайней мере, генерируются новые сообщения об ошибках. вы говорите, что есть новая улучшенная версия, которая не требует указания всех 40!?   -  person J Cooper    schedule 27.07.2011
comment
Нет. Вам придется указать их все или же использовать Добавить ссылку на службу, которая сделает все это за вас.   -  person John Saunders    schedule 27.07.2011
comment
@John Saunders. По какой-то причине я не заметил, что добавление ссылки на службу будет работать с локальным путем к файлу. Большое спасибо за помощь!   -  person J Cooper    schedule 27.07.2011


Ответы (1)


Либо укажите пути ко всем файлам WSDL и схемы в командной строке, либо используйте «Добавить ссылку на службу», которая сделает это за вас.

Обратите внимание, что «Добавить ссылку на службу» работает с файлами в вашей локальной системе, а не только с файлами по URL-адресу.

person John Saunders    schedule 27.07.2011
comment
Имел аналогичную проблему и может подтвердить, что добавление файлов XSD к вызову SvcUtil устранило проблему. Командная строка выглядела так: SvcUtil /t:code WsdlFile.wsdl FirstSchemaFile.xsd SecondSchemaFile.xsd ThirdSchemaFile.xsd /l:cs - person Simon Tewsi; 01.11.2012
comment
Явная передача всех файлов XSD вместо использования *.XSD также сработала для меня. - person Matthew Cole; 16.01.2013
comment
Добавление ссылки на службу не решило мою проблему не удается загрузить XML-типы. Есть идеи, почему? - person LCJ; 05.04.2013
comment
У меня были точно такие же ошибки. wsdl и все xsds находятся в одной папке. svcutil subscriptions.wsdl *.xsd /l:c# /o:proxy.cs У нас был клиент, который предоставил wsdl с более чем 15 файлами xsd. Так что этот подход работал для нас. - person Craig Nicholson; 05.11.2016