Je veux savoir exactement combien de temps la réponse envoyée à l'utilisateur a été, après coup, à des fins de consignation. Est-il possible de le faire à partir d'un HttpModule dans asp.net (dans l'événement PostRequestHandlerExecute).Longueur de réponse dans PostRequestHandlerExecute
0
A
Répondre
1
Malheureusement, HttpResponse.OutputStream
est écriture seule, donc ce n'est pas très simple - toute tentative de regarder la propriété Length
du flux de sortie jetteront une exception.
La seule solution à ce que j'ai jamais vu est en appliquant un filtre à l'objet Response
, de sorte que le filtre peut compter les octets.
Une recherche rapide sur Google landed me here, ce qui semble proche de l'implémentation dont je me souviens.
1
le souhaitent Aide
context.PostRequestHandlerExecute += delegate(object sender, EventArgs e)
{
HttpContext httpContext = ((HttpApplication)sender).Context;
HttpResponse response = httpContext.Response;
// Don't interfere with non-HTML responses
if (response.ContentType == "text/html")
{
response.Filter = new MyRewriterStream(response.Filter);
}
};
MyRewriterStream Classe
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web;
namespace ExecutionTime
{
public class MyRewriterStream:Stream
{
#region "Propiedades"
private Stream _sink;
#endregion
public MyRewriterStream(System.IO.Stream stream)
{
_sink = stream;
}
public override void Write(byte[] buffer, int offset, int count)
{
string outStr;
outStr = UTF8Encoding.UTF8.GetString(buffer, offset, count);
strPageSize = strPageSize + outStr;
StringBuilder sb = new StringBuilder(outStr);
if (sb.ToString().LastIndexOf("</html>") > 0)
{
string HtmlResponse = "";//HERE PUT YOUR NEW HTML RESPONSE
sb.AppendLine(HtmlResponse);
byteArray = Encoding.ASCII.GetBytes(sb.ToString());
_sink.Write(byteArray, 0, byteArray.Length);
}
else
{
_sink.Write(buffer, offset, count);
}
}
public override void Flush()
{
_sink.Flush();
}
#region Properites
public override bool CanRead
{
get { return true; }
}
public override bool CanSeek
{
get { return true; }
}
public override bool CanWrite
{
get { return true; }
}
//public override void Flush()
//{
// _sink.Flush();
//}
public override long Length
{
get { return 0; }
}
private long _position;
public override long Position
{
get { return _position; }
set { _position = value; }
}
#endregion
#region Methods
public override int Read(byte[] buffer, int offset, int count)
{
return _sink.Read(buffer, offset, count);
}
public override long Seek(long offset, SeekOrigin origin)
{
return _sink.Seek(offset, origin);
}
public override void SetLength(long value)
{
_sink.SetLength(value);
}
public override void Close()
{
_sink.Close();
}
#endregion
}
}
Questions connexes
- 1. JQuery: Obtenir la longueur de la réponse JSON?
- 2. Comment connaître la longueur de la réponse (HttpWebRequest.GetResponse(). GetResponseStream())
- 3. Réponse HTTP 411 Longueur requise, Http Client 4.0.1 Android
- 4. Est-il nécessaire de définir la longueur de contenu dans mon en-tête de réponse?
- 5. Détermination de la longueur de réponse à partir d'un filtre ISAPI
- 6. LONGUEUR SQL dans ActiveRecord?
- 7. Différence entre LONGUEUR [...] et fn: longueur (...) dans JSP EL
- 8. Longueur de l'ID de session dans Tomcat
- 9. longueur de nom de routine dans fortran90
- 10. Longueur d'un tableau dans l'objectif C
- 11. Obtenez longueur de tableau de chaînes de longueur inconnue
- 12. longueur sel de mot de passe optimal
- 13. Longueur de la fraction
- 14. longueur de chaîne dans le schéma
- 15. Fixer le nombre de longueur dans mysql
- 16. Les tableaux de longueur nulle dans VBScript
- 17. Longueur de données dans la colonne ntext?
- 18. Longueur de la sélection actuelle dans Eclipse
- 19. Longueur de ligne égale dans un tableau
- 20. Tableau bidimensionnel de longueur variable dans Cobol
- 21. l'attribut onclick de longueur maximale dans ie
- 22. Code de hachage numérique de longueur fixe à partir d'une chaîne de longueur variable dans C#
- 23. longueur entre 2 valeurs
- 24. Longueur arbitraire entier dans Ada
- 25. Réponse XML dans Flash
- 26. longueur d'entrée = valeur longueur & se développe automatiquement en fonction de la valeur longueur
- 27. Générer une chaîne de longueur supérieure à une longueur fixe
- 28. Longueur maximale de l'octet []?
- 29. Restriction de longueur NSString
- 30. Tableau de longueur