Bonjour à tous,
Je travaille actuellement sur une application Silverlight qui communique avec une BDD Sql Server via un service WCF.
J'arrive parfaitement à récupérer des données de mes tables et de mes procédures stockées. A noter que j'avais eu un problème qui, après plusieurs recherches, était lié à la taille de mes listes. J'avais souvent une erreur 404 not Found quand mes listes étaient trop volumineuses. Après des recherches, j'ai fais une modif qui a corrigé le problème. Désormais, je peux rapatrier du service WCF à mon application Silverlight de grandes listes d'objets (plus de 40.000 lignes par exemple).
La modif en question :
Dans le fichier Web.Config de mon service WCF
<dataContractSerializer maxItemsInObjectGraph="6553600"/>
Aujourd'hui, j'ai voulu ajouter une fonction dans mon service qui reçoit en paramètre une liste d'objets. J'ai eu une erreur 404 Not Found. Après pleins d'essais, je me suis rendu compte que le problème venait la encore de la taille de ma liste. Pour en être sur, j'ai transmis à la fonction de mon service WCF une liste de 150 Clients et ça passe sans problème. Mais dés que je passe à plus de 200, j'ai un message d'erreur.
Malheureusement, je ne vois pas ce qu'il faut changer pour augmenter le quota pour les objets que j'envoie au service WCF. Si quelqu'un a déjà eu le problème ou / et sait comment le résoudre, merci de me l'expliquer. J'ai passé ma journée sur ce problème ennuyeux.
Pour info, j'ai bien une autre solution si je ne parviens pas à envoyer ma liste complète d'objets Client au service WCF.
Je peux envoyer chaque client un à un pour faire le traitement.
La fonction de mon service WC exécute une procédure stockée qui compare les données de mon objet avec celles d'une table de ma BDD. Selon les résultats, elle modifie certains champs de mes objets. L'idée évoquée au début de ce post était donc d'envoyer une liste de clients au service, de faire ensuite une boucle qui exécute à chaque fois la procédure stockée et modifie l'objet en cours en conséquence pour enfin renvoyer la liste d'objets à l'application Silverlight.
Avec le problème que j'ai évoqué, j'ai envisagé une autre solution.
Faire la boucle sur ma liste d'objets sur l'application Silverlight et appeler à chaque fois la fonction de mon service WCF avec en paramètre l'objet en cours uniquement et qui me renvoi l'objet correctement modifiée. J'ai testé cette méthode qui fonctionne mais je la trouve assez longue (j'ai environ 350 objets je dirais).
En fait, j'aurais aimé connaitre l'avis de certains sur la meilleure méthode à employer :
boucle sur l'appli et appels à chaque fois au service
ou
appel une seule fois au service en lui envoyant la liste complète, traitement et enfin renvoi de la liste complète.
Y'a t'il une méthode préférable ou plus conseillée qu'une autre ?
Merci d'avance pour vos réponses.
Partager