2011-07-27 32 views
6

Trên máy của tôi, tôi có tệp WSDL và tất cả các tệp lược đồ cần thiết. Tôi đang cố gắng sử dụng svcutil để tạo mã proxy của khách hàng từ WSDL. Command:svcutil từ tệp wsdl: Lược đồ lỗi với không gian tên đích không thể tìm thấy

svcutil myfile.wsdl 

tôi tiếp tục nhận được một lỗi khi sử dụng svcutil, nhưng không có vấn đề khi tải wsdl với soapUI nếu điều đó có nghĩa là bất cứ điều gì.

tôi tiếp tục nhận được lỗi này:

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

Dưới đây là 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> 

Dưới đây là file schema arevent-service.xsd (nằm trong cùng một thư mục như 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> 

Không gian tên đích tất cả trông giống như chúng khớp với tôi. Như tôi đã nói, soapUI không có vấn đề khi tải wsdl.

Tôi không biết phải làm gì.

+0

Thử chỉ định đường dẫn đến tất cả các lược đồ sau đường dẫn đến WSDL. Đó là những gì bạn phải làm với WSDL.EXE cũ hơn. –

+1

Tôi có khoảng 40 sơ đồ được tham chiếu. Tôi đã cố gắng đầu tiên và có vẻ như ít nhất là tạo ra các thông báo lỗi mới. bạn đang nói rằng có một phiên bản cải tiến mới mà không đòi hỏi phải xác định tất cả 40 !? –

+1

Không. Bạn sẽ phải chỉ định tất cả chúng, hoặc sử dụng "Thêm dịch vụ tham khảo", mà sẽ làm tất cả cho bạn. –

Trả lời

12

Chỉ định đường dẫn đến tất cả tệp WSDL và lược đồ trên dòng lệnh hoặc sử dụng "Thêm tham chiếu dịch vụ", thao tác này sẽ làm điều đó cho bạn.

Lưu ý rằng "Thêm tham chiếu dịch vụ" không hoạt động với các tệp trên hệ thống cục bộ của bạn - không chỉ cho các tệp tại URL.

+5

Đã xảy ra sự cố tương tự và có thể xác nhận rằng việc thêm tệp XSD vào cuộc gọi SvcUtil đã khắc phục được sự cố. Dòng lệnh trông giống như sau: 'SvcUtil/t: code WsdlFile.wsdl FirstSchemaFile.xsd SecondSchemaFile.xsd ThirdSchemaFile.xsd/l: cs' –

+0

Việc chuyển hoàn toàn trong tất cả các tệp XSD thay vì sử dụng * .XSD cũng làm việc cho tôi. –

+0

Thêm tham chiếu dịch vụ không giải quyết được vấn đề của tôi http://stackoverflow.com/questions/15815095/cannot-load-xml-types. Bất kỳ ý tưởng tại sao? – Lijo

Các vấn đề liên quan