Was hat das WCF-Fehler bedeutet: "Custom tool warning: Cannot import wsdl:portType"
Erstellte ich einen WCF service library-Projekt in meiner Lösung und service-Verweise auf diese. Ich die Leistungen aus einer Klassenbibliothek, so habe ich Referenzen aus meiner WPF-Anwendung-Projekt-neben der Bibliothek-Klasse. Services sind festlegen von gerade nach vorne - nur geändert zu bekommen async-service-Funktionen.
Alles gut funktioniert - bis ich wollte zu aktualisieren, mein service-Verweise. Es ist fehlgeschlagen, so dass ich schließlich zurückgesetzt und erneut versucht, aber es scheiterte dann auch! So aktualisieren Sie die service-Referenzen schlägt fehl, ohne jegliche änderungen. Warum?!
Den Fehler den ich bekomme, ist diese:
Custom tool error: Failed to generate code for the service reference
'MyServiceReference'. Please check other error and warning messages for details.
Die Warnung gibt weitere Informationen:
Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension:
System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: List of referenced types contains more than one type with data contract name 'Patient' in
namespace 'http://schemas.datacontract.org/2004/07/MyApp.Model'. Need to exclude all but one of the
following types. Only matching types can be valid references:
"MyApp.Dashboard.MyServiceReference.Patient, Medski.Dashboard, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
"MyApp.Model.Patient, MyApp.Model, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" (matching)
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
Gibt es zwei ähnliche Warnungen zu sagen:
Custom tool warning: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='ISomeService']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_ISomeService']
Und das gleiche für:
Custom tool warning: Cannot import wsdl:port ..
Ich finde das alles verwirrend.. ich habe nicht einen Patienten der Klasse auf der client-Seite Dashboard-außer die, die ich bekam durch die service-Referenz. Also, was bedeutet es? Und warum funktioniert es plötzlich? Denken Sie daran: ich hatte nicht einmal etwas ändern!
Nun, die Lösung war gefunden hieraber ohne Erklärung, was dies bedeutet. Also, in der "Configure service reference" für den Dienst, den ich deaktivieren Sie die "Wiederverwendung Typen der referenzierten Assemblys". Wiederaufbau jetzt ist es alles funktioniert ohne Probleme. Aber was habe ich wirklich ändern? Wird dies eine Auswirkung auf meine Bewerbung? Und Wann sollte man dies deaktivieren? Ich will, dass die Wiederverwendung der Typen, die ich eingerichtet habe DataContract auf, aber nicht mehr. Bekomme ich immer noch Zugriff auf diese, ohne dies überprüft?
InformationsquelleAutor der Frage stiank81 | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim hinzufügen der service Referenz, es gibt zwei Möglichkeiten, die Typen, die den Dienst verwendet, können behandelt werden:
Gibt es viele Dinge, die schief gehen können. Wir haben festgestellt, dass, wenn das tool abstürzt, ist es manchmal schneller zu löschen, die service reference und starten dann erneut.
Wir haben aufgehört, service-Referenz. Für Projekte, bei denen wir die Kontrolle über den client und den service, verwenden wir die Methode beschrieben, die in diesem screencast.
InformationsquelleAutor der Antwort Shiraz Bhaiji
Fand ich meine Antwort hier: http://www.lukepuplett.com/2010/07/note-to-self-don-let-wcf-svcutil-reuse.html
Lange Geschichte kurz: ich deaktiviert Wiederverwendung von Typen in reference assemblies aus der Menü "Erweitert".
Ich weiß nicht, ob das zählt, aber ich bin nicht mit MVC, aber auch Web-Formulare.
InformationsquelleAutor der Antwort Dragos Durlut
Hatte ich auch dieses Problem Heute. Es hat mich einen ganzen Tag zu finden, mein Fehler. Hoffe, es hilft.
Meiner Klasse, die nicht in der Lage waren importiert werden, hat eine individuelle enum-Typ-Eigenschaft. Diese Eigenschaft markiert ist, als DataMember und die Enum ist auch gekennzeichnet als DataContract. Alles fein so weit.
Ich vergaß zu markieren jedes enum-Element als EnumMember.
Also änderte ich
:
Und es endlich geklappt!
InformationsquelleAutor der Antwort Aurel
dass vielleicht seltsam klingen, aber ich habe es behoben durch das löschen der Referenzen, schließen Sie Visual Studio, und öffnen Sie es erneut, und schließlich das hinzufügen der Referenzen wieder.
Ich denke, das benutzerdefinierte Werkzeug was benötigt wird, um neu gestartet werden oder so etwas.
InformationsquelleAutor der Antwort Ateik
Gehen Sie auf "Erweiterte Eigenschaften beim hinzufügen der Referenz und entfernen" - System.Fenster.Browser" aus der Checkliste, löst Es das problem.
InformationsquelleAutor der Antwort Sridhar Subramanian
Ich ständig über diesen Fehler, während es funktioniert auf einem anderen Entwickler-Maschine. Obwohl ich bin ein voll-admin überall in meiner virtuellen Maschine, ich habe versucht, schließen Sie Visual Studio, und re-opening mit "Als Administrator Ausführen" und es magisch gearbeitet.
Glück.
InformationsquelleAutor der Antwort Tim Gabrhel
Einen Nachteil ausschalten 'Wiederverwendung von Typen der referenzierten Assemblys" ist, kann es zu Problemen mit mehrdeutigen verweisen. Dies ist aufgrund der service-Referenz erstellen Sie diese Objekte wieder in der Referenz .cs-Datei und der code der Implementierung des service kann auf Sie in der original-namespace.
Tritt dieses Szenario finde ich es nützlich, zu überprüfen, die 'Wiederverwendung von Arten in bestimmten referenzierten Assemblys", die mir erlaubt, zu wählen, die mit mehrdeutigen Verweise nur, das behebt das Problem schnell Weg.
Hoffe es hilft jemand anderem.
InformationsquelleAutor der Antwort John
Bekam ich die Warnung nach dem Upgrade meine Lösung von Visual Studio (VS) 2010-2013 und ändert sich jedes Projekts .NET Framework 4 bis 4.5.1. Ich Schloss die VS und wieder geöffnet und die Warnung ging Weg.
InformationsquelleAutor der Antwort Paul Berglund
Meine interfaces der WCF-Dienst in einer assembly, die Umsetzung ist eine andere und die service-Referenz ist in noch einer anderen Baugruppe, die getrennt von den Kunden der service-Referenz. Ich bekam die Fehlermeldung direkt nachdem ich angewendet, das DataContract einer Enumeration. Nachdem ich angewendet EnumMember den Feldern der enum, das Problem zu lösen.
InformationsquelleAutor der Antwort zsolt világos
Wenn Sie Zweifel haben, dass Ihr service nicht irgendwelche Probleme haben (z.B. Probleme mit enums, oder nicht-serialisierbare Klassen, wie von anderen erwähnt), dann versuchen, erstellen Sie eine neues Projekt mit einer neuen Referenz.
Bin ich mit Silverlight 5 und ich hatte versucht zu löschen und neu erstellen der Referenz-mehrfach. Die
reference.cs
Datei kam gerade völlig leer, jedes mal, und es war buchstäblich Jahre her, seit ich hatte es so versucht, herauszufinden, was sich geändert hatte, war der service in Frage.Bemerkte ich, dass der Fehler darin enthaltenen Verweise auf 2.0.5.0. Nun ich weiß auch nicht, ob das wirklich relevant ist, um die Silverlight-version, aber es machte mich denken, nur die Schaffung einer Marke neues Projekt und dann plötzlich hat alles geklappt.
InformationsquelleAutor der Antwort Simon_Weaver
Ich war auf der Suche über mein Projekt und ich hatte das gleiche Problem. Es stellte sich heraus, dass unterschiedliche Versionen derselben DLL auf dem WCF vs. Web-Site.
Web site eine neuere version der DLL und der service war mit Bezug auf eine ältere version der DLL. Einst waren Sie alle in sync alle gut funktioniert.
InformationsquelleAutor der Antwort CBBSpike
Erlebte ich den gleichen Fehler. Ich kämpfte fast einen Tag versuchen, um herauszufinden, was schief lief. Der Anhaltspunkt für mich waren die Warnungen, die VS war, zu werfen. Es wurde versucht, zu tun, irgendeine Art von mapping auf Yahoo.Yui.Compressor.dll eine Bibliothek, die ich hatte, Hinzugefügt und entfernt werden (da habe ich beschlossen, es nicht zu verwenden), ein paar Tage vor. Es war schockierend, weil die Bibliothek noch nicht da war, aber irgendwie war es zu versuchen, diese zu referenzieren.
Endlich, ich wieder diese dll aus dem Papierkorb, und dann könnte ich update meine service-Referenz erfolgreich.
InformationsquelleAutor der Antwort cdiaz
Für jeden, der in Zukunft hier, ich hatte den gleichen Fehler aber durch version verursacht Probleme in zwei verschiedene Arten.
Habe ich zwei WCF-Dienste und zwei client-Anwendungen, sprechen Sie über die service-Referenzen. Ich aktualisierte ein nuget-Paket auf beiden Seiten und versucht ein update der service Referenz und bekam diese Fehlermeldung.
Löschen hat nicht geholfen. Das deaktivieren von "Wiederverwendung von Baugruppen" ist nicht erwünscht, wie ich brauche, um Sie wiederzuverwenden - das ist der springende Punkt.
Am Ende gab es zwei getrennte Fragen:
1) Das erste Problem ist, glaube ich, wurde ein visual studio-Problem mit dem Zwischenspeichern. Ich akribisch ging über alle Referenzen verfügen, und fand keine Probleme, aber es immer noch berichtet wird, nicht auf die Vorherige version der Datei. Ich deinstalliert alle nuget-Pakete, Neustart von visual studio, und neu installiert. Update der service Referenz gearbeitet.
2) Das zweite Problem war verursacht durch ein Abhängigkeitsproblem. Ich aktualisiert die nuget-Paket auf beiden Seiten und alles erschien richtig, aber ein nicht-Abhängigkeit war out of sync. Beispiel:
Paket Foo v1 Referenzen-Bar v1.
Es ist möglich, Sie zu aktualisieren Foo und Bar auf v2 unabhängig voneinander, ohne dass eine Aktualisierung der Referenz.
Wenn Sie beide installieren Foo und Bar v2 die service reference tool scannt Foo v2, finden Sie in der Referenz zu Bar v1 und scheitern, weil Sie nicht finden können, die ältere version.
Dies ist nur richtig, wenn Sie update die Versionsnummern der dll, die für jedes Paket.
Visual Studio und MSBuild haben kein problem mit dem erstellen der Anwendung, aber der service Referenz wird eine schreckliche Zeit, die versucht, alle Probleme lösen.
Ich hoffe, das jemand hilft.
InformationsquelleAutor der Antwort TheMightyGherkin