2008-09-09 8 views
4

Voici un facile pour vous:Déterminer la taille de la page par HttpModule

Je durée de la demande en se connectant via un HttpModule et je voudrais savoir le nombre d'octets de chaque page est aussi bien.

HttpContext.Current.Response.OutputStream.Length déclenche un NotSupportedException.

Qu'est-ce qu'un moyen facile de faire cela?

Répondre

3

J'ai un HttpModule qui implémente un réécriteur de flux. Il dérive de la classe Stream. Dans mon HttpModule je le code suivant:

void app_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    HttpResponse response = HttpContext.Current.Response; 
    response.Filter = new MyRewriterStream(response.Filter); 
} 

Dans la classe de flux que j'ai le code suivant qui remplace la méthode par défaut d'écriture:

public override void Write(byte[] buffer, int offset, int count) 
{ 
    string outStr; 
    outStr = UTF8Encoding.UTF8.GetString(buffer, offset, count); 
    //Do useful stuff and write back to the stream 
} 

Vous pouvez simplement prendre la longueur de la chaîne à la deuxième point

+0

Faites-vous signe: response.Filter = new MyRewriterStream (response.OutputStream) ?? –

+0

rien, tu avais raison ... ça ressemblait à une faute de frappe. C'est fait! –

+0

Faites attention à la conversion du tampon byte [] en chaîne si la requête concerne un fichier binaire. – David

Questions connexes