2009-07-22 5 views
0

J'ai écrit un service WCF de test qui renvoie un tableau de chaînes aussi long que le paramètre de la méthode.Délai d'attente WCF si j'ajoute 1 élément à un tableau

public class XNS_Test : IXNS_Test { 
    public string[] testString(int num) { 
     string[] s = new string[num]; 
     for(int i = 0; i < num; i++) { 
      s[i] = "abcde"; 
     } 
     return s; 
    }} 

j'ai écrit une application formulaire pour voir combien de temps il faut:

private void button1_Click(object sender, EventArgs e) { 
     int num = Convert.ToInt32(textBox1.Text); 
     int[] intArr; 
     string[] stringArr; 

     TimeSpan start = DateTime.Now.TimeOfDay; 
     try { 
      XNS_Test.XNS_TestClient client = new testWCFServices.XNS_Test.XNS_TestClient(); 
      if(((Button)sender).Name == "button2") 
       intArr = client.testInt(num); 
      else 
       stringArr = client.testString(num); 
     } 
     catch { } 
     TimeSpan stop = DateTime.Now.TimeOfDay; 
     label1.Text += num.ToString() + " elements: " + stop.Subtract(start).ToString() + "\n"; 
    } 

Si je tente de générer une chaîne [x] où x < = 2480 la réponse de service en moins de 5 secondes , sinon un timeout se produit (je le mets à 1 minute).

Pourquoi une chaîne [] de 2480 est renvoyée en 4 secondes et une chaîne [] de 2481 entraîne un délai d'expiration.

Je pense que je dois changer un paramètre de configuration mais je ne sais pas lequel. J'utilise wsHttpBinding avec reliableSession et sans sécurité.

Merci,

Alberto

Répondre

1

La taille maximale de transfert est assez faible par défaut, 64 Ko de la mémoire. Vous pouvez ajuster un paramètre sur la connexion appelée maxReceivedMessageSize dans le fichier de configuration.

+0

YESSSSSS! PARFAIT! MERCI MERCI! Je devenais fou! Tu m'as sauvé! MERCI! – Alberto

0

Il est possible que vous prenez juste trop de temps pour créer des 2481 chaînes sur le tas, mais peu probable ou vous excedding une certaine limitation maxsize etc. Cependant ceci est ma conjecture. Le meilleur moyen pour vous de résoudre un problème de service WCF est d'activer le suivi, puis d'examiner la trace à l'aide de l'outil svctraceviewer. Les journaux sont très détaillés et devraient identifier le problème.

http://msdn.microsoft.com/en-us/library/ms733025.aspx

Questions connexes