2010-11-01 5 views
1

J'utilise async WCF appels à l'intérieur d'une boucle (dire les boucles fonctionne pendant 45 itérations)Limite de la demande lors de l'utilisation des appels WCF asynchrones?

 ServiceClient client = ServiceClientFactory.Instance().GetServiceClient(); 

     for (int count = 0; count < 45; count++) 
     { 

      client.BeginSendCount(textBox1.Text, client_SendCountCompleted , client); 

     } 

quand cela arrive, toutes les demandes sont reçues au service (quelque chose comme 20 a reçu seulement). Mais si je le fais de manière synchrone, tous les appels sont reçus sur le serveur.

J'utilise NetTcp lier avec les paramètres suivants,

CloseTimeout = "00:01:00" OpenTimeout = "00:01:00" ReceiveTimeout = "00:01:00" sendTimeout = "00 : 01: 00"

[ici, je l'ai essayé réduire les délais d'attente comme suggéré dans d'autres forums, qui ne fait aucune différence]

de plus, je suis sur un SingleInstance avec « NoConcurrency » au fin de serveur (ceci j'ai pensé à travers et c'est le meilleur arrangement pour cette circonstance). Et hébergé dans un service Windows.

Quelqu'un a-t-il une idée?

Aide appréciée.

/BB

+0

Je suis sûr que certaines des options de reliure offrent la possibilité de garantir une livraison ordonnée et fiable (c'est-à-dire reconnue). – brumScouse

Répondre

1

Qu'est-ce que vous utilisez pour héberger le service? IIS peut décider qu'il est inondé et arrêter de prendre les demandes. Je voudrais regarder dans ces paramètres. Alternativement, vous pourriez trouver un moyen d'éviter d'avoir autant de demandes.

+0

est hébergé comme un service winservice et vrai j'accepte le fait qu'il y a trop d'appels, mais cela les itérations sont rares, en plus des appels de synchronisation qui fonctionnent bien. Merci pour la réponse rapide et j'ai mis à jour la question avec plus d'informations. – Illuminati

+0

Vous mentionnez que vous avez "réduit les délais d'attente" pour vous aider, mais je pense que vous devriez prolonger les délais, car le serveur pourrait être trop sollicité pour répondre en moins d'une minute (surtout s'il y a concurrence simultanée). essayez de les pousser tous à 10 minutes. –

+0

Cela n'a pas aidé non plus :( – Illuminati