0 votes

Exception WCF - "Service non trouvé" lors de la récupération d'une grande collection

mon service WCF est utilisé par une application Silverlight pour récupérer des données. Je n'ai aucun problème,

    [OperationContract]
MyCollectionClass GetList(int sessID, string name);

  [CollectionDataContract]
public class MyCollectionClass : List<MyClass>{ }

  [DataContract]
public class MyClass {

  [DataMember]
  public string Prop1 { get; set; }

  [DataMember]
  public string Prop2 { get; set; }

}

Mais lorsque MyCollectionClass a un nombre d'enregistrements inférieur à 3000+, cela fonctionne. Lorsque le nombre d'enregistrements est supérieur, le service WCF semble fonctionner, mais lors de l'événement "completed" de l'application Silverlight, une exception se produit : "Service Not Found".
J'ai trouvé que cela pouvait être lié à la configuration du service et j'ai essayé d'utiliser les deux :

maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"

sur la configuration de WCF et du client. Ajouté également :

readerQuotas: 
  maxArrayLength="2000000" 
  maxStringContentLength="2000000"/>

(j'ai également modifié les valeurs trouvées), mais il semble que cela ne fonctionne pas. Je pense que le problème est que le message dépasse le nombre maximum d'octets par "message", mais je ne comprends pas pourquoi les données ne sont pas réparties sur les différents messages.
Tous les conseils sont les bienvenus.

Giorgio

0voto

Adriaan Davel Points 156

Puis-je vous suggérer de réduire le nombre d'enregistrements que vous renvoyez ? Il ne s'agit pas d'une solution de contournement, mais d'une suggestion d'utilisation. Je ne peux imaginer qu'un utilisateur puisse s'accommoder de l'affichage de plus de 3 000 enregistrements. Si vous agrégez des valeurs à partir de l'ensemble des données plutôt que de les agréger côté serveur, les performances de votre application s'en trouveront grandement améliorées... J'ai rencontré ce problème quelques fois dans mes applications, et presque toujours il a été préférable de changer le design plutôt que les options...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X