139 Stimmen

Service-Referenzfehler: Code für die Dienstreferenz konnte nicht generiert werden

Ich habe eine Windows Service Solution und versuche, einen Dienstverweis auf einen Hermes (Opensource ebms Message Server) Web Service in VS2010 hinzuzufügen.

Ich kann den Webdienst über seine URL finden, aber wenn ich versuche, die Dienstreferenz zu füllen, erhalte ich in Visual Studio die folgenden Fehler:

Error 8 Custom tool error: Failed to generate code for the service reference 'testService'.  Please check other error and warning messages for details. C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 6 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://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 7 Custom tool warning: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:binding[@name='EbmsSoapHttpStatusQuery']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:service[@name='EbmsMessageStatusQuery']/wsdl:port[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Warning 5 Custom tool warning: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.XmlSerializerMessageContractImporter
Error: Schema with target namespace 'http://service.ebms.edi.cecid.hku.hk/' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://service.ebms.edi.cecid.hku.hk/']/wsdl:portType[@name='EbmsStatusQuery'] C:\Users\Admin\documents\visual studio 2010\Projects\MyProject\MyProject.MessageHandler\Service References\testService\Reference.svcmap 1 1 MyProject.MessageHandler

Nachforschungen ergaben, dass es daran liegt, dass svcutil.exe die Proxys nicht erstellen konnte, weil es keine Berechtigungen für ein Verzeichnis hat (möglicherweise c: \windows\temp ). Ich habe versucht, verschiedene Zugriffsberechtigungen zu vergeben, aber ich bin mir nicht sicher, welcher Benutzer die Berechtigung benötigt, oder ob es sich nur um ein Ablenkungsmanöver handelt.

Jede Idee wäre sehr willkommen.

感謝

2voto

CodingYoshi Punkte 23266

Ein Neustart von Visual Studio hat bei mir Abhilfe geschaffen. Ich verwende VS 2015.

0voto

CartoJunkie Punkte 1

Ich erhalte den gleichen Fehler in Silverlight 5 (VS2012)

Sie können auch die Verweise auf entfernen:

  • System.ServiceModel.DomainServices.Client
  • System.ServiceModel.DomainServices.Client.Web

Nachdem Sie die Dienstreferenzen aktualisiert haben, müssen Sie sie wieder hinzufügen.

0voto

Grwon Punkte 61

Wie bereits erwähnt, gibt es mehrere mögliche Probleme. Wir haben festgestellt, dass die DLL für die WCF-Bibliothek als Referenz zum Client-Projekt hinzugefügt wurde. Dies wiederum führte zu Problemen bei der Auflösung der Objekte und somit dazu, dass die Dateien durch die Codegenerierungsschritte "geleert" wurden. Das Deaktivieren der Option "Reuse Types..." scheint zwar eine Lösung zu sein, erzeugt aber zusätzliche Definitionen von Objekttypen, die Stellvertreter für die echten Typen sind, in einem neuen Namensraum, was dann alle möglichen "Kompatibilitäts"-Probleme bei der Verwendung dieser Typen verursacht. Nur wenn Sie einen Typ wirklich "verstecken" wollen, sollten Sie diese Option aktivieren.

Das Ausblenden des Typs ist sinnvoll, wenn Sie nicht wollen, dass eine Abhängigkeit vom Typ "DLL" in ein Projekt "durchsickert", das Sie von einem anderen getrennt halten wollen. Wenn die DLL für das WCF-Bibliotheksprojekt in die Referenzen des Clientprojekts eindringt, haben Sie dieses Problem mit allen möglichen seltsamen Nebeneffekten, da die Typdefinitionen auch in der DLL enthalten sind.

0voto

Prashant Punkte 671

Dasselbe Problem, das durch Ausführen von Visual Studio im Admin-Modus behoben wurde

0voto

Ich bin auf dieses Problem gestoßen, als Aktualisierung einer VS2010 WCF+Silverlight-Lösung in VS2015 Professional . Beim automatischen Upgrade von Silverlight 4 auf Silverlight 5 wurde der Wert des Kontrollkästchens für die Wiederverwendung von Dienstreferenzen geändert und die Generierung schlug fehl.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X