ServiceDescriptionImporter nicht finden können, die definition für den web service-namespace

Frage ich mich, ob jemand weiß, wie Sie zu überwinden ist ein Problem, ich bin immer bei der Verwendung von ServiceDescriptionImporter. Ich bin Generierung von web-service-client-proxy dynamisch, mit CodeDOM, wenn der web-service-WSDL-Typ-schema eingebettet, der folgende code funktioniert einwandfrei, jedoch wenn die WSDL enthält einen import der folgende code erzeugt eine Fehlermeldung auf die nicht in der Lage zu finden, die Typ-definition. Ich habe einige nachforschungen im web und habe etwas code hinzu, um die schema-Importeur, aber ich immer noch die Fehlermeldung beim erstellen von Proxys für WSDLs mit importieren.

Stream stream = client.OpenRead(wsURL);

ServiceDescription description = ServiceDescription.Read(stream);

ServiceDescriptionImporter importer = new ServiceDescriptionImporter();

importer.ProtocolName = "Soap12"; //Use SOAP 1.2.

importer.AddServiceDescription(description, null, null);

//Add any imported files
foreach (System.Xml.Schema.XmlSchema wsdlSchema in description.Types.Schemas)
{
    foreach (System.Xml.Schema.XmlSchemaObject externalSchema in wsdlSchema.Includes)
    {
        if (externalSchema is System.Xml.Schema.XmlSchemaImport)
        {
            Uri baseUri = new Uri(wsURL);
            Uri schemaUri = new Uri(baseUri, ((System.Xml.Schema.XmlSchemaExternal)externalSchema).SchemaLocation);
            stream = client.OpenRead(schemaUri);
            System.Xml.Schema.XmlSchema schema = System.Xml.Schema.XmlSchema.Read(stream, null);
            importer.Schemas.Add(schema);
        }
    }
}

importer.Style = ServiceDescriptionImportStyle.Client;

importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;

CodeNamespace nmspace = new CodeNamespace();
CodeCompileUnit unit1 = new CodeCompileUnit();

unit1.Namespaces.Add(nmspace);

//This is generating the error:
ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit1);

Den Fehler bekommen:

Nicht finden können definition für 'xyz'. Service-Beschreibung mit namespace " xyz " fehlt.
Parameter name: name

WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://www.ibm.com/maximo" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ibm.com/maximo" xmlns:i0="http://www.ibm.com/maximo/wsdl/UWMFO_UWMFO_BB_Interface" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:s="http://www.w3.org/2001/XMLSchema">
 <wsdl:import location="http://localhost/MaximoWS/MessageService.asmx?wsdl=wsdl1" namespace="http://www.ibm.com/maximo/wsdl/UWMFO_UWMFO_BB_Interface"/>
 <wsdl:types>
  <s:schema targetNamespace="http://www.ibm.com/maximo">
   <s:include schemaLocation="http://localhost/MaximoWS/MessageService.asmx?schema=schema1"/>
  </s:schema>
 </wsdl:types>
 <wsdl:service name="MessageService">
  <wsdl:port name="UWMFO_UWMFO_BB_InterfaceSOAP12Binding" binding="i0:UWMFO_UWMFO_BB_InterfaceSOAP12Binding">
   <soap:address location="http://localhost/MaximoWS/MessageService.asmx"/> 
  </wsdl:port>
  <wsdl:port name="UWMFO_UWMFO_BB_InterfaceSOAP12Binding1" binding="i0:UWMFO_UWMFO_BB_InterfaceSOAP12Binding1">
   <soap12:address location="http://localhost/MaximoWS/MessageService.asmx"/> 
  </wsdl:port>
 </wsdl:service>
</wsdl:definitions>

Vielen Dank

  • Haben Sie ein Beispiel für die WSDL, die fehlschlägt?
  • Hi svick, das folgende ist die wsdl:
  • Sie können Bearbeiten Sie die Frage und hinzufügen der WSDL (oder link) gibt.
InformationsquelleAutor JerryH | 2012-02-16
Schreibe einen Kommentar