2011-07-27 17 views
6

Makinemde bir WSDL dosyası ve gerekli tüm şema dosyaları var. WSDL'den istemci proxy kodu oluşturmak için svcutil kullanmaya çalışıyorum. Komut: bunun bir anlamı olmadığını SoapUI ile wsdl yüklerkenwsdl dosyasından svcutil: Hedef ad alanı ile Hata Şeması bulunamadı

svcutil myfile.wsdl 

ben hiç problem Svcutil kullanırken bir hata almaya devam ama var. WSDL İşte

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

edilir:

bu hatayı almaya devam şema dosyası arevent-service.xsd İşte

<?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> 

edilir (WSDL ile aynı dizinde bulunan):

<?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> 

Hedef adların hepsi eşleştikleri gibi görünüyor. Dediğim gibi, soapUI wsdl'nin yüklenmesinde sorun yok.

Ne yapacağımı bilmiyorum.

+0

WSDL'ye giden yolun ardından tüm şemaların yollarını belirtmeyi deneyin. Eski WSDL.EXE ile yapmanız gereken budur. –

+1

adam yaklaşık 40 başvurulan şemalarım var. İlk birkaçını denedim ve en azından yeni hata iletileri oluşturuyor gibi görünüyor. 40'ın tamamını belirtmeyi gerektirmeyen yeni geliştirilmiş bir sürüm olduğunu mu söylüyorsunuz? –

+1

Hayır. Bunların tümünü belirtmeniz ya da "Hizmet Referansı Ekle" seçeneğini kullanmanız gerekir; –

cevap

12

Komut satırındaki tüm WSDL ve şema dosyalarının yollarını belirtin ya da bunu sizin için yapacak olan "Hizmet Referansı Ekle" seçeneğini kullanın.

"Hizmet Başvurusu Ekle" ifadesinin yerel sisteminizdeki dosyalarla çalıştığını unutmayın - yalnızca bir URL'deki dosyalar için değil.

+5

Benzer bir sorunla karşılaştı ve XSD dosyalarını SvcUtil çağrısına eklemenin sorunu çözdüğünü doğrulayabilir. Komut satırı şöyle görünüyordu: 'SvcUtil/t: kod WsdlFile.wsdl FirstSchemaFile.xsd SecondSchemaFile.xsd ThirdSchemaFile.xsd/l: cs' –

+0

* .XSD kullanmak yerine tüm XSD dosyalarında açıkça iletmek de benim için çalıştı. –

+0

Servis Ekle Referans sorunumu çözmedi http://stackoverflow.com/questions/15815095/cannot-load-xml-types. Bir fikrin neden? – Lijo