Comment puis-je régler le maxItemsInObjectGraph propriété par programme à partir d'une Application Silverlight?
J'ai une Silverlight 3.0 de l'application qui est à l'aide d'un service WCF pour communiquer avec la base de données, et quand j'ai de grandes quantités de données renvoyées par le service méthodes-je obtenir Service introuvable erreurs. Je suis assez convaincu que la solution à ce problème est de simplement mettre à jour le maxItemsInObjectGraph bien, mais je suis de la création du service client progrogrammatically et ne peuvent pas trouver où mettre cette propriété. Voici ce que je suis en train de faire maintenant:
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None)
{
MaxReceivedMessageSize = int.MaxValue,
MaxBufferSize = int.MaxValue
};
MyService.MyServiceServiceClient client = new MyService.MyServiceProxyServiceClient(binding, new EndpointAddress(new Uri(Application.Current.Host.Source, "../MyService.svc")));
OriginalL'auteur Corey Sunwold | 2010-03-18
Vous devez vous connecter pour publier un commentaire.
Il n'est pas défini dans la liaison, mais dans le Comportement de Service.
Dans Silveright, maxItemsInObjectGraph par défaut int.MaxValue.
Voici un article sur comment le changer .NET application, mais pas de Silverlight: Programattically réglage de la MaxItemsInObjectGraph propriété au client
Un extrait du code:
Je vois. Je suppose que parce que le client est un Silverilght application, le System.ServiceModel.dll est différent de celui de l' .NET un. Mais DataContractSerializer maxItemsInObjectGraph sur Silverlight par défaut int.MaxValue. Allez-vous le mettre à une plus petite valeur dans votre code?
Pas de. C'était peut être une incompréhension de ma part, mais j'ai pensé qu'il était par défaut sensiblement moins int.MaxValue. J'ai eu aspx pages qui ont utilisé les services WCF et a eu un problème similaire, et j'ai été en mesure de modifier la maxItemsInObjectGraph dans le web.config pour être 2147483646 et il a résolu le problème.
S'avère que vous aviez raison, il n'y avait pas besoin de le faire puisque dans silverlight, il n'est par défaut de type int.maxValue
Merci!!!. Je ne pense pas que vous avez besoin ", comme DataContractSerializerOperationBehavior" bien que, Trouver<> retourne déjà coulé le type.
OriginalL'auteur erxuan
Ce qui suit est une fonction que j'ai utilisé à l'intérieur d'un client de l'objet qui hérite de
Le but de la méthode est de par programmation à l'ensemble de la MaxItemsInObjectGraph valeur pour chaque opération. Cela me permet d'avoir beaucoup de structures plus complexes.
J'ai l'habitude de l'appeler dans le constructeur de l'objet.
OriginalL'auteur Perrin
Changer le maxItemsInObjectGraph à votre service WCF pour chaque point de terminaison, de le changer dans Silverlight signifie que le client sera en mesure de soutenir le comportement, mais le service doit prendre en charge il aswell.
Après un changement dans votre service, régénérer le proxy/mise à jour du service web, et vous obtiendrez une nouvelle ServiceReference.config, qui comprendra de nouvelles maxItemsInObjectGraph valeur
OriginalL'auteur Neil