Dies ist mein erster Versuch, WCF zu verwenden, also rate ich, dass ich etwas falsch mache. Ich versuche, einen von der WSDL definierten Soap-Service unter http://confluence.atlassian.com/rpc/soap-axis/confluenceservice-v1?wsdl zu erreichen. Ich benutze VS2010, und ich füge eine Service-Referenz zu meinem Projekt hinzu und weise sie auf die URL dort (oder vielmehr unsere Intranet-Installation davon) Wenn ich den Objektbrowser zum Anzeigen des Service verwende, sind die Operationen an der Schnittstelle ALL void-Methoden ohne Parameter. Es scheint, dass WCF die Typinformation nicht korrekt liest. Dabei spielt es keine Fehler geben, aber es ist jede Menge Warnungen wie die folgende Angabe:WCF-Dienstverweis generiert void-Methoden von WSDL
Warnung 1 Anpassungs-Tool Warnung: Fehler namens InvalidSessionException in Betrieb GetPermissions nicht importiert werden. Nicht unterstützter WSDL, der Fehler Nachrichtenteil muss auf ein Element verweisen. In dieser Fehlermeldung wird nicht auf ein Element Bezug genommen . Wenn Sie Zugriff auf das WSDL-Dokument bearbeiten, können Sie das Problem beheben, indem Sie auf ein -Schema-Element verweisen, das das "Element" Attribut verwendet. Z: \ TestLibrary \ Service Referenzen \ Confluence \ Reference.svcmap 1 1 TestLibrary
Warnung 2 Warnung Anpassungs-Tool: Das optional WSDL Verlängerungselement 'body' von Namespace 'http://schemas.xmlsoap.org/wsdl/soap/' wurde nicht behandelt. XPath: // wsdl: definitionen [@ targetNamespace = 'http://confluence.atlassian.com/rpc/soap-axis/confluenceservice-v1']/wsdl: binding [@ name = 'confluencieservice-v1SoapBinding']/wsdl: operation [@ name = 'getPermissions']/wsdl: input [@ name = 'getPermissionsRequest'] Z: \ TestLibrary \ Service Referenzen \ Confluence \ Reference.svcmap 1 1 TestLibrary
Was mache ich falsch? Ich habe versucht, die Konfiguration des Dienstes mit einer Kombination von Optionen zu ändern, aber ich konnte niemals die Typen aus der WSDL richtig einholen. Ich habe davon ausgegangen, dass WCF die Typklassen zusammen mit der Service-Schnittstelle automatisch generieren wird. Soll ich herausfinden, welche Typen in der WSDL verwendet werden, und die Klassen und Datenverträge selbst erstellen, oder ist es etwas anderes?
+1 für das Vorschlagen von svcutil.exe. – Bernard
Hmm ... es scheint mit svcutil.exe zu arbeiten. Das ist wirklich merkwürdig. Trotzdem danke. – StarKat99
Auch für mich, wenn Sie unter Visual Studio Startmenü gehen gibt es eine Kurzzeichen für die VS-Eingabeaufforderung, die Svcutil leicht zugänglich macht, dann: 'svcutil.exe http: // Somedomain.com/someapi.wsdl' – AaronLS