Wie kann ich die maxItemsInObjectGraph-Eigenschaft programmgesteuert von einer Silverlight-Anwendung aus festlegen?

8

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%     
Corey Sunwold 18.03.2010, 21:59
quelle

3 Antworten

28

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%     
erxuan 18.03.2010, 23:15
quelle
3

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.

    
Perrin 26.10.2011 03:23
quelle
1

Ä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

    
Neil 19.03.2010 17:57
quelle