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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
diese (servicedescriptionimporter) ist nicht in 4.0 framework von .net.
so können Sie tun ist, aktualisieren Sie auf visual studio 2012( erforderliche minimum für .net framework 4.5).
helfen ::
http://msdn.microsoft.com/en-us/library/system.web.services.description.servicedescriptionimporter.aspx
Fand ich einen Beitrag, der ein ähnliches problem hatte:
ServiceDescription Importeur und Import-Direktiven in die Wurzel WSDL
Das Problem scheint gelöst zu sein, die auf das WSDL-wenn ich kommentieren Sie die Prüfung auf dem externen schema-Objekt und verwendet den code in den Beitrag:
Ich weiß nicht, warum dies funktioniert, weiß jemand warum?