Fehler beim hinzufügen der service Referenz: Geben Sie eine rekursive Sammlung von Daten-Vertrag wird nicht unterstützt
Ich versucht, um einen service Verweis auf einen WCF-Dienst, der sich in der gleichen Lösung aus einer ASP.NET MVC 4 Projekt aber gescheitert. Ich bekam eine Fehlermeldung mit dem Inhalt:
Benutzerdefinierte tool Fehler: Fehler beim generieren von code für die service-Referenz
'XXX'. Bitte überprüfen Sie anderen error und warning-Meldungen für details. Die
root Warnung:Warnung 9 Benutzerdefiniertes tool warning: Cannot import wsdl:portType Detail: Ein
Ausnahme während der Ausführung einer WSDL-import-extension:
System.ServiceModel.Beschreibung.DataContractSerializerMessageContractimporter
Error: Type 'Newtonsoft.Json.Linq -.JToken' ist eine rekursive Sammlung
Daten-Vertrag wird nicht unterstützt. Ändern Sie ggf. die
definition der collection " Newtonsoft.Json.Linq -.JToken' zu entfernen
Verweise auf sich selbst. XPath zur Fehlerquelle:
//wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IXXX']
C:\Projekte...\Reference.svcmap 1 1 pqrt.web
Wenn ich entfernt die Daten, die Aufträge aus dem service-Vertrag, es funktionierte. Ich habe auch versucht, das hinzufügen der service Referenz zu anderen Projekten, wie einer Bibliothek-Projekt, oder sogar ein ASP.NET MVC 3-Projekt, alle arbeitete. Ich Frage mich, ob das war ein Problem mit ASP.NET MVC 4? Ich war mit VS 2012 RC.
Einen workaround den ich denken kann, ist das hinzufügen der service Referenz in einer Bibliothek-Projekt, und dann rufen Sie die library-Projekt aus ASP.NET MVC 4, aber ich hasse es, das zu tun, da es einen zusätzlichen Schritt. Irgendwelche Vorschläge?
- Meine Antwort wäre völlig off-base... kann man die Daten-Vertrag mit Ihrer Frage?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um die Referenz zu Newtonsoft.Json-Sie könnten auch verlassen Newtonsoft.Json aus der Liste der Baugruppen zu prüfen, für die Wiederverwendung von datacontracts.
Um dies zu tun: rechtsklicken Sie auf Ihr service-Referenz, klicken Sie dann auf Konfigurieren Service-Referenz...
Unter "Wiederverwendung von Typen der referenzierten Assemblys" wählen Sie die zweite option, um anzugeben, in welche Baugruppen zu suchen, die wiederverwendet Typen und wählen Sie " alle Baugruppen, aber deaktivieren Sie Newtonsoft.Json
Versuchen, entfernen Newtonsoft.Json von Ihren Referenzen und re-fügen Sie Ihre service-Referenz.
Hatte ich diesen Fehler zur compile-Zeit, wenn Sie versuchen, um wieder eine
JObject
als Endpunkt Ergebnis.Bekam ich um ihn herum, indem Sie den Endpunkt zurück
object
und mit dieser Art von code:Den jQuery konsumieren, den Dienst über jsonp z.B.
$.getJSON('<?>.svc/SomeRequest', 'form_request=' + webform_as_json, request_callback);
dann entpackt das serialisierte Objekt etwa so:Meinst du das wirklich, um wieder eine Knoten in einer beliebig tiefen Baum?
Wenn dem so ist, dann anstatt eines JToken, zuerst in eine Zeichenkette konvertiert, um die JSon-text. Auf der client-Seite, können Sie
Jtoken.Parse(yourstring)
wieder in eine JToken.Wenn nicht, dann betrachten Sie vorbei zurück
Value<T>
und lassen die Serialisierung befassen sich mit T.