À l'aide d'une connexion persistante dans WinRT est HttpClient classe?
Notre application WinRT est incroyablement lent lors de l'ouverture de connexions à nos serveurs. Demandes de ~500ms à exécuter. C'est le blocage de certains de nos scénarios.
Lors du débogage, nous avons remarqué que quand Fiddler est active, les demandes sont beaucoup plus rapides - ~100ms par demande. Quelques recherches plus tard, nous avons compris que c'était parce que Fiddler est à l'aide de connexions persistantes lors de l'utilisation de proxy appels, ce qui rend notre proxy appels beaucoup plus rapide.
Nous avons vérifié cela de deux manières.
- Nous avons mis UseProxy pour faux et a fait observer que la demande est allé de nouveau à être lent.
- Nous avons éteint Fiddler's "de la réutilisation des connexions" et fait observer que la demande est allé de nouveau à être lent.
Nous avons essayé permettant keep-alive par le biais de la Connexion de l'en-tête (.Connexion.Add("Keep-Alive")) mais cela ne semble pas avoir d'effet - en fait, l'en-tête semble être manifestement ignoré par la .NET composant et n'est pas envoyé sur la demande (encore une fois, en inspectant thru Fiddler).
Personne ne sait comment définir keep-alive sur demande dans Windows 8, WinRT, HttpClient classe?
Oui, à l'aide de 1.1. Merci pour les liens, mais je ne vois pas comment la première s'applique - nous ne sommes pas d'avoir des erreurs. Comme pour le 2ème - j'ai précisé dans ma question que nous avons essayé en utilisant le lien en-tête - je ne suis pas vraiment sûr de savoir comment la liste complète des en-têtes est utile (désolé).
Héhé, non je sais, mais on ne sait jamais ce qu'un second regard sur les choses 🙂 bonne chance!
OriginalL'auteur Shahar Prish | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
Les ensembles suivants de la corriger en-têtes pour activer keep-alive pour moi (le client est un client http)
Si vous souhaitez activer le keep-alive, utilisez
OriginalL'auteur Adam
Essayez d'utiliser le HttpContent classe pour ajouter les en-têtes - quelque chose comme ceci sur la base (mais non testé) http://social.msdn.microsoft.com/Forums/en-CA/winappswithcsharp/thread/ce2563d1-cd96-4380-ad41-6b0257164130
Derrière les coulisses HttpClient utilise HttpWebRequest qui vous donne un accès direct à la directive KeepAlive mais étant donné que vous allez par le biais de HttpClient vous ne pouvez pas accéder directement à la propriété sur la classe HttpWebRequest.
MODIFIER
Puisque vous ne voulez OBTENIR, vous pouvez le faire avec:
Nous avons essayé d'ajouter le Keep-Alive-tête à la fois à travers DefaultHeaders et par des changements dans HttpRequestMessage. Mais nous n'avons pas l'essayer directement sur l'objet de la requête. Je vais essayer ça, mais depuis les 2 autres méthodes n'ont pas mis les en-têtes sur la demande, je n'ai pas de grands espoirs.
J'ai testé le code exact ci-dessus pour la requête GET dans une application winrt et je reçois Connection: Keep-Alive comme le seul en-tête de requête. 'Fonctionne sur ma machine : )
OriginalL'auteur Adam Tuliper - MSFT