2010-03-04 15 views
2

J'ai une page très simple avec laquelle un utilisateur télécharge un fichier. En utilisant uniquement le C# côté serveur (par exemple, le code-behind), comment puis-je mesurer la durée pendant laquelle l'utilisateur doit attendre le téléchargement du fichier?Mesurer le temps de téléchargement?

+0

Je n'essaie pas de dire à l'utilisateur combien de temps il reste dans le téléchargement. J'essaie de vérifier combien de temps le téléchargement a pris. – lance

Répondre

2

Ceci est très difficile (bien, c'était dans IIS6). Vous devez écrire un HttpModule pour intercepter le téléchargement et le gérer, puis utiliser la taille totale du fichier entrant (c'est dans l'en-tête de la requête), calculer combien d'octets par seconde vous obtenez, et ensuite vous pouvez calculer combien de temps reste-t-il. Cependant, vous ne pouvez pas faire cela avec seulement le fichier code-behind - le fichier est déjà téléchargé et disponible au moment où la demande arrive au gestionnaire asp.net.

+0

Vous m'avez dit comment calculer la vitesse, pas la durée? Est-ce correct? Votre dernier paragraphe est pertinent - en disant qu'ASP.NET ne connaît pas la requête tant qu'elle n'est pas encore complètement téléchargée sur le serveur? – lance

+0

Non, je vous ai dit comment mesurer la durée. Une fois que vous avez des octets par seconde, vous pouvez calculer le temps total si vous connaissez le nombre total d'octets du fichier. Par exemple. Si vous obtenez un débit de 4 000 octets par seconde et que le fichier contient 16 000 octets, cela prendra quatre secondes au total (estimation, ces calculs ne sont jamais entièrement corrects tant qu'ils ne sont pas terminés). Implicite dans ceci est que vous devez maintenir le total total des octets reçus et secondes écoulées depuis le début - diviser les deux pour obtenir des octets par seconde, puis diviser la taille du fichier en octets par octets par seconde pour obtenir le nombre de secondes pour le fichier entier . –

+0

La méthode que j'ai décrite est utilisée pour l'estimation prédictive du temps écoulé (par exemple, on soustrait généralement le temps total du temps total pour donner à l'utilisateur une "secondes restantes" ou n'importe quelle invite). Il serait utile que nous sachions ce que vous faites avec les données ... si vous ne faites que l'utiliser à des fins de rapport final, la solution de M. Fisher devrait suffire. –

1

Je devais trouver quelque chose comme ceci et I'm using this.

+0

Ce qui sur cette page me dit combien de temps un téléchargement a pris? – lance

+0

la barre de progression – Fredou

1

Si vous n'êtes pas concerné par une précision totale, vous pouvez envoyer un appel rapide au serveur pour indiquer qu'un téléchargement est en cours, suivi immédiatement de la demande de téléchargement. Le serveur peut alors mesurer le temps écoulé entre le premier appel et la fin du deuxième appel.

+0

Ce n'est pas aussi simple que ça en a l'air, mais je vais quand même voter. Prenons par exemple le cas où deux utilisateurs téléchargent des fichiers en même temps. Le serveur doit être capable de distinguer les heures de début de fichier uniques. Faisable, mais pas trivial. Et puisque le premier appel sera très probablement un appel de type AJAX hors bande, la structure de données sur le serveur devra être statique, et il devra alors l'effacer, etc. –

Questions connexes