Premier appel .net webservice est lent
Je suis d'appeler un .net webservice de mon .net winforms application, à la fois dans le framework 4.0. Au cours de l'exécution du programme, la première fois que le webservice a une méthode appelée, l'appel prend ~10-12 secondes. Les appels ultérieurs prendre environ 1 à 2 secondes. Les appels suivants, même lorsque le site web de référence de l'instance est recréé, sont encore environ 1 à 2 secondes. Lorsque l'application winforms est redémarré, le premier appel de retard se produit à nouveau, mais les appels suivants sont sensibles.
L'instance de la référence web est créé avant l'appel produit, et ne fait pas partie du retard.
XmlSerializers pour l'application winforms sont générés (et utilisé, pour autant que je sais, mais je ne suis pas sûr de la façon de le vérifier).
Le retard n'est pas survenant en raison d'une première compilation sur le webservice côté. C'est une production d'un webservice qui est utilisé tout au long de la journée, et de son pool d'applications est en restant dans la mémoire. Aussi loin que je peux voir, le retard se produit soit sur le côté client, ou entre le client et le serveur pour que le premier appel, mais pas les appels suivants.
Pas sûr de ce que pour vérifier prochaine. Des idées?
Je soupçonne que la réponse se trouve sans doute quelque part dans ce question/réponse de liste déroulante : stackoverflow.com/questions/6988981/webclient-is-very-slow En particulier, je suis à la recherche des proxy questions.
Avez-vous des "détecter Automatiquement les paramètres" pour votre proxy dans les options internet sur les failles de la machine?
Oui, j'attends une petite quantité de retard, mais certainement pas de ce que je vois.
Je vais jeter un oeil.
OriginalL'auteur Brian M. | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Comme spender avait indiqué, la question a à voir avec la détection du proxy. Tournant que dans Internet Explorer résolu le problème, mais n'a pas été possible de le faire dans ma situation.
Au lieu de cela, il y a une solution pour contourner l'utilisation de proxy par défaut, et donc la détection automatique.
L'ajout de ces entrées à l'application.config permet à certaines Url de contourner le proxy:
Plus d'informations peuvent être trouvées ici: <l'Élément defaultProxy> sur MSDN
Ce n'est pas vraiment un Internet Explorer option en soi, c'est une option de l'API wininet, Internet Explorer utilise également et fournit une interface graphique pour la configuration.
Travaillé pour moi une grande
OriginalL'auteur Brian M.
essayez de configurer le proxy à un vide WebProxy, c'est à dire:
ou vous pouvez remplacer les paramètres de proxy dans le .Fichier de configuration de votre application à l'aide de la defaultProxy clé dans la system.net de la section. Le suivant désactive la détection automatique de Proxy:
http://weblog.west-wind.com/posts/2005/Dec/14/Slow-Http-client-calls-from-ASPNET-20-Make-sure-you-check-your-Proxy-Settings
OriginalL'auteur Prash
J'ai souffert de ce problème à plusieurs reprises - l'homme que je déteste!!! lol Alors que je n'ai jamais de façon concluante résolu, vous pouvez essayer un certain nombre de choses. Tout d'abord, faire un appel au web service lors de la mise en place et de faire la "douleur" de la voie d'abord! Deuxièmement, essayez de jouer avec le service web du pool d'applications IIS - il faire en sorte qu'il n'a jamais recycle lui-même ou au moins à une Pieuse heure du matin ou peut-être par 10 000 demandes de.
Je sais que ce n'est probablement pas une grande réponse, mais j'espère que ça aide un peu!
EDIT :
Partie du problème est que le service web n'est pas "toujours" - il va dormir, recycle etc jusqu'à ce que nécessaire. Il serait intéressant de faire des lectures sur le maintien des services web en vie, 5 9s temps etc!
Correct. Pool d'applications n'est pas lié ici. mais merci pour la suggestion
Ce webservice, pendant le temps de mes tests, est en effet "toujours". Il est appelé par les clients 2-3 fois par seconde, à partir de 7h du matin à 7h. Je comprends ce que vous dites en ce qui concerne l'application de la piscine recycle et telles que, mais ce n'est pas le cas ici.
Juste assez couvrant juste les bases! La seule façon que j'ai jamais eu cette ronde était de faire un premier mannequin d'appel pour le service quand mon client a commencé. Désolé peut pas être plus d'aide que ce qui est actuellement!
Alors, serais-je en droit de penser que le client appelle le service web clients et que votre problème est d'une .Net application qui a utilisé le Service Web de Référence de l'assistant?
OriginalL'auteur Bertie
J'ai ajouté ces paramètres sur mon basicHttpBinding, la désactivation automatique du proxy détection et d'acquérir une grande accélération sur les premiers temps d'exécution. Bien sûr, cela fonctionne bien si vous êtes en environnement intranet, ou vous savez que vous n'avez pas besoin de proxy.
bypassProxyOnLocal="false"
useDefaultWebProxy="false"
Espère que cette aide.
OriginalL'auteur Paolo Marani
M'excuse pour le nécro-ajouter, mais cette question a fait un certain nombre de fois pour moi, et j'ai l'habitude d'oublier tous les aspects de cette question à chaque fois. Voici donc la liste (certaines autres personnes citées)
BypassProxyOnLocal et UseDefaultWebProxy sont faux. (Vous pouvez
décidez si vous voulez le faire dans un fichier de configuration ou via le code).
propriétés à l'état " on "au lieu de "Auto"
plus rapide que 4.5.2 sur la première demande, par exemple.
VisualStudio (VS ajoute une grande charge supplémentaire sur la première
appel pas reflétée dans le communiqué .exe construire.)
certainement envisager l'envoi d'un mannequin demande au serveur lors de la
démarrage - tout simplement pour obtenir .NET pour sérialiser la connexion à l'avant.
De même, si vous écrivez une course-et-quittez l'application, envisager la rédaction d'un
fond factice demande, alors que le programme est en cours de démarrage.
souvent. Chaque fois que l'application de la piscine recycle sur un service IIS, le premier
demande de venir dans l'après recycle peut prendre un certain temps.
par défaut, un service de mise en veille prolongée après 20 minutes d'inactivité et
la prochaine demande qui vient en a un retard similaire à un poste de recycler
demande.
OriginalL'auteur Kevin