Ich habe eine Silverlight 3.0-Anwendung, die einen WCF-Dienst verwendet, um mit der Datenbank zu kommunizieren, und wenn große Datenmengen von den Servicemethoden zurückgegeben werden, erhalte ich Service Not Found-Fehler. Ich bin ziemlich sicher, dass die Lösung darin besteht, einfach die Eigenschaft maxItemsInObjectGraph zu aktualisieren, aber ich erstelle den Service-Client progromatisch und kann nicht herausfinden, wo diese Eigenschaft gesetzt werden soll. Hier ist, was ich gerade mache:
%Vor%Es ist nicht im Binding, sondern im Serviceverhalten definiert.
In MaxSight ist MaxItemsInObjectGraph standardmäßig int.MaxValue.
Hier ist ein Artikel, wie man ihn für die .NET-Anwendung ändert, aber nicht für Silverlight: Programmgesteuertes Festlegen der MaxItemsInObjectGraph-Eigenschaft im Client
Ein Ausschnitt des Codes:
%Vor%Das Folgende ist eine Funktion, die ich in einem Client-Objekt verwendet habe, das von
erbt %Vor%Der Zweck der Methode besteht darin, den MaxItemsInObjectGraph-Wert für jede Operation programmatisch festzulegen. Dadurch kann ich viel komplexere Strukturen haben.
%Vor%Normalerweise rufe ich es in den Konstruktoren des Objekts auf.
Ändern Sie den maxItemsInObjectGraph in Ihrem WCF-Dienst für jeden Endpunkt. Wenn Sie ihn in Silverlight ändern, kann der Client das Verhalten unterstützen, aber der Dienst muss ihn ebenfalls unterstützen.
Nachdem Sie es in Ihrem Dienst geändert haben, generieren Sie den Proxy / Update-Webdienst neu und Sie erhalten eine neue ServiceReference.config, die den neuen maxItemsInObjectGraph-Wert enthält
Tags und Links wcf wcf-client silverlight-3.0 .net-3.5