Erste "Rekursive Sammlung von Daten-Vertrag" beim Verweis auf einen WCF-Dienst mit einem etwas komplexere Methode
Wenn ich nur einfache Methoden, die in meinem WCF-service, alles funktioniert einwandfrei. Allerdings, wenn ich auch die folgende Methode verwenden, tritt ein problem:
[OperationContract]
public List<KeyValuePair<string, string>> GetAllAccounts()
{
return AccountBusiness.GetAllAccounts();
}
Bekomme ich diesen Fehler beim verweisen auf den service aus einem anderen Projekt:
Warnung 5 Benutzerdefinierte tool warning: Cannot import wsdl:portType
Detail: Eine Ausnahme während der Ausführung einer WSDL-import-extension:
System.ServiceModel.Beschreibung.DataContractSerializerMessageContractimporter
Fehler: Typ " Newtonsoft.Json.Linq -.JToken' ist eine rekursive Sammlung von Daten-Vertrag wird nicht unterstützt. Ändern Sie ggf.
die definition von collection " Newtonsoft.Json.Linq -.JToken' zu entfernen
Verweise auf sich selbst.
XPath zur Fehlerquelle: //wsdl:definitions[@targetNamespace='http://tempuri.org']/wsdl:portType[@name='NodeService'] C:\inetpub\wwwroot\MyclientProject\Service
Referenzen\NodeService\Reference.svcmap 1 1 MyClientNode
Wenn ich entfernen die oben genannte Methode, kompilieren und aktualisieren Sie den Verweis, dann funktioniert es einwandfrei. Aber wenn ich die oben beschriebene Methode, die ich konsequent erhalten Sie diese Warnung.
Einen Vorschlag, den ich fand, war so deinstallieren Sie Visual Studio 2012 und reparieren Sie Visual Studio 2010. Ich will nicht, das zu tun.
Anderen vorgeschlagen die Option "Reuse types in alle referenzierten assemblys", aber das vermasselt die Methodensignaturen und ist nicht nutzbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als es stellte sich heraus, der Fehler wurde verursacht durch die Tatsache, dass ich hatte eine Microsoft-Web-API-Pakets installiert von NuGet, welches im Lieferumfang enthalten Json.NET. Nach der deinstallation dieser, funktioniert es einwandfrei.
Dies kann die Antwort für Sie - wenn nicht, schauen Sie in die anderen Pakete, die Sie installiert haben (die Sie nicht brauchen), und entfernen Sie Sie.
Die NewtonSoft.Json-Bibliothek, die auf dem Server installiert ist ist nicht das gleiche, das auf dem client installiert von NuGet. Dies ist der Grund, warum die service-Referenz ist nicht in der Lage Sie wieder zu verwenden.
In diesem Fall klicken Sie einfach auf "Wiederverwendung von Arten in bestimmten referenzierten Assemblys", überprüfen Sie alles ab, aber die Newtonsoft.Json-Montage und re-generieren.
Der Service-Reference wird erzeugt, ohne Fehler.