J'ai besoin d'aide pour la configuration .NET HttpWebRequest délai d'attente
Mon objectif est d'obtenir la réponse à partir de jusqu'à 6000 Url dans les plus brefs délais. Il fonctionne très bien (12 secondes pour 5200 LAN Adresses), jusqu'à un certain retard a commencé à se produire.
Mon code utilise jusqu'à 20 simultanée HttpWebRequest.BeginGetResponse avec ThreadPool.RegisterWaitForSingleObject
pour la gestion des timeouts.
Cependant, certains (jusqu'à 4 à 5 000 demandes jamais frappé la TimeoutCallback fonction avec le deuxième paramètre (timedOut) vrai, et ils déchets 5 minutes de mon précieux temps jusqu'à ce que ils ont frappé theBeginGetResponseCallback fonction et ensuite élever un WebException. Les exceptions dit quelque chose comme "l'opération a atteint la limite de temps", mais que le message d'exception est en portugais(ma langue maternelle) je ne pouvais pas Google.
Je me demande si je peux réduire ce délai à 20 secondes par exemple. Quelqu'un sait comment? J'ai déjà essayé:
<system.web>
<httpRuntime executionTimeout="20"/>
</system.web>
Mais comme je suis en cours d'exécution comme une Application Console, ASP.NET les configurations ne fonctionnent pas. Et j'ai aussi essayé:
myHttpWebRequest.Timeout = 20*1000;
Et
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), AsyncState, 20*1000, true);
Sans succès. Pouvez-vous m'aider?
Mise à jour
Ce que j'essaie de dire, c'est il y a 4 résultats possibles pour une requête HTTP asynchrone:
- N'atteignent jamais la fonction de rappel -> timeout fonction de rappel
- Atteint et réponses avec succès
- Atteint et déclenche une exception
- Retard exactement 5 minutes, jusqu'à déclencher une "limite de temps" exception web à l'intérieur de la fonction de rappel
La 4ème possibilité est de retarder mon Application, et je ne sais pas comment faire pour raccourcir ce délai
Mise à jour
Est-il possible que la méthode GetResponseStream
au lieu de la GetResponse
est qui provoque le délai d'attente?
OriginalL'auteur Jader Dias | 2008-12-22
Vous devez vous connecter pour publier un commentaire.
Il semble que vous devez définir la ReadWriteTimeout propriété de l'objet de la requête.
http://blogs.msdn.com/buckh/archive/2005/02/01/365127.aspx
Votre commentaire dans le post ci-dessous il frappe à droite sur la tête. Web asynchrone demandes d'ignorer la propriété timeout. Donc, sauf si vous avez roulé votre propre asynchrone événement de délai d'attente, le délai d'attente de la demande web va être basé sur le ReadWriteTimeOut et pas le webrequest délai d'attente.
Peut l'être par défaut définie dans la norme MS fichiers de configuration?
OriginalL'auteur
.Timeout = temps passé à essayer d'établir une connexion (non compris les temps de recherche) .ReadWriteTimeout = temps passé à essayer de lire ou d'écrire des données une fois la connexion établie
OriginalL'auteur Benhar Upasana