2009-05-04 6 views
0

J'ai une application qui enregistre un fichier volumineux dans l'API d'un fournisseur et obtient une réponse. Il le fait ainsi:Comment mesurer le temps écoulé de HttpWebResponse réel par rapport à la transmission de HttpWebRequest?

HttpWebRequest webRequest = BuildWebRequest(..., requestParams.Data, ...); 
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse(); 

Je voudrais mesurer le temps écoulé seulement lui-même la réponse (à l'exclusion du temps qu'il faut pour transmettre/poster le grand multipart/form-data).

Je ne vois aucune combinaison de méthodes ou d'événements HttpWebRequest auxquels je peux accéder pour séparer le téléchargement de la demande du téléchargement de la réponse.

Des idées?

+0

Je devrais mentionner que l'objectif est de mesurer cela dans l'environnement en direct, donc les outils proxy externes comme le violoniste ne sont pas appropriés. –

Répondre

0

Sauf si vous envoyez un fichier, l'heure de la requête sera triviale.

+0

Oui, il "publie un gros fichier." Jusqu'à 10 Mo, disons. –

0

Votre code appelant n'a aucun moyen de savoir quand la réponse est envoyée par le serveur. Le mieux que vous pouvez obtenir est quand les premières données de la réponse devient disponible dans le flux de réponse.

0

Si c'est juste pour tester, j'utiliserais Fiddler pour surveiller le trafic. Il peut vous montrer le type d'information que vous voulez.

Voici un exemple de sortie d'un appel webservice rapide qui a été capturé à l'aide Fiddler:

== TIMING INFO ============ 
ClientConnected:  15:41:07:2804 
ClientDoneRequest:  15:41:07:6398 
Gateway Determination: 0ms 
DNS Lookup:   0ms 
TCP/IP Connect:   0ms 
ServerGotRequest:  15:41:07:6398 
ServerBeginResponse: 15:41:07:7804 
ServerDoneResponse: 15:41:07:7804 
ClientBeginResponse: 15:41:07:7804 
ClientDoneResponse: 15:41:07:7804 

Si vous ne l'avez jamais utilisé Fiddler pour faire des appels de service Web, assurez-vous d'ajouter ce qui suit à votre site. config:

<system.net> 
    <defaultProxy> 
     <proxy proxyaddress="http://127.0.0.1:8888" /> 
    </defaultProxy> 
    </system.net> 
Questions connexes