Schließt den Schematyp in die WSDL-Datei ein

8

Ich habe eine WSDL von Hand erstellt, die nur eine Operation ohne Eingabeparameter und ohne Ausgabeparameter hat.

Ich erhalte folgenden Fehler, wenn ich versuche, einen Client aus dieser WSDL zu erstellen:

  

Kann wsdl: portType nicht importieren   Detail: Beim Ausführen einer WSDL-Importerweiterung wurde eine Ausnahme ausgelöst: System.ServiceModel.Description.DataContractSerializerMessageContractImporter   Fehler: Schema mit Zielnamespace ' Ссылка wurde nicht gefunden.   XPath to Error Quelle: // wsdl: definitions [@ targetNamespace = ' Ссылка '] / wsdl: portType [@ name = 'GAMEAssociateIntf'] C: \ toolbox \ BlueTest \ BloodRedTest \ BloodRedTest \ Service

Das types (im Client zu verwenden) muss aus dem in der WSDL vorhandenen XML generiert werden. Ich denke, beim Hinzufügen der Dienstreferenz konnte das Tool aufgrund eines Fehlers im XML-Code nicht erstellt werden. Das xsd scheint das Problem zu sein.

Welche Änderung muss in der WSDL vorgenommen werden, um den Proxy zu erstellen?

Hinweis: Ich versuche, die XML-Typen einzuschließen, die in WSDL selbst definiert sind. [Ich brauche keine separate Datei zur Schemadealition]

WSDL

%Vor%

REFERENZEN :

  1. WSDL - keine Eingabe - Best Practice
  2. Was macht diesen WCF-Fehler? bedeuten: "Benutzerdefinierte Tool-Warnung: kann Wsdl: PortType nicht importieren"
  3. Einen WSDL 1.1-Web-Service-Vertrag manuell schreiben
  4. Vertrag schreiben - Erste Webdienste
  5. generiert den WCF-Server-Code aus den WSDL-Dateien
  6. Wie wsdl-Eingabe- und -Ausgabennamen abgerufen werden erscheinen
  7. Inline-Schema
  8. Hand gerollte SOAP-Anforderung
Lijo 04.04.2013, 15:11
quelle

3 Antworten

1

Ich habe Inline-Schema . Danke auch an @Indoknight. Der Arbeitsvertrag WSDL ist unten angegeben.

Hinweis1: Das xsd-Präfix und targetNamespace sind in dem Schema enthalten, das in wsdl type

verwendet wird

Hinweis2: nillable="true" wird für den in der Antwortnachricht verwendeten Typ angewendet

Hinweis3: Wenn Sie die folgende Ausnahme erhalten, vergewissern Sie sich, dass soapAction in der Vertrags-WSDL und in der vom WCF-Dienst generierten WSDL identisch ist. Einige Tools, die zum Generieren von Dienstcode verwendet werden, können die SOAP-Aktion nach eigenem Ermessen ändern.

  

Fehlercode: a: ActionNotSupported

     

Faultstring: Die Nachricht mit Action ' Ссылка kann nicht beim Empfänger verarbeitet werden , aufgrund eines ContractFilter-Mismatch am EndpointDispatcher. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder auf eine Bindungs- / Sicherheitskonflikt zwischen dem Absender und dem Empfänger zurückzuführen sein. Überprüfen Sie, ob Absender und Empfänger den gleichen Vertrag und die gleiche Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine).

SOAP-Aktion - Vertrags-WSDL

%Vor%

SOAP-Aktion - Generierte WSDL

%Vor%

Vertrags-WSDL

%Vor%

Anfrage

%Vor%

Antwort

%Vor%     
Lijo 26.04.2013, 17:21
quelle
6

Ich habe einige Zeit damit verbracht, Probleme herauszufinden. Ihre & lt; Typen & gt; Abschnitt der WSDL ist falsch, es sollte wie folgt sein. Damit kann ich nun clientseitige Artefakte in Java generieren.

%Vor%

AKTUALISIEREN

Basierend auf der folgenden Konversation. Ein Attribut nillable hinzugefügt.

%Vor%

Anfrage

%Vor%

Antwort

%Vor%     
IndoKnight 19.04.2013 17:15
quelle
1

wsi.org hat eine Reihe von Validierungswerkzeugen, die sicherlich einen Versuch wert wären.

Der zusätzliche Nutzen der Verwendung dieser Tools besteht darin, dass Sie dann tatsächlich die Einhaltung der WSDL-Spezifikation (en) beanspruchen können.

    
Derek Nigel Bartram 26.04.2013 13:14
quelle