2010-04-13 2 views
34

Je voudrais m'envoyer par e-mail un vidage rapide des en-têtes d'une requête GET pour le débogage. J'avais l'habitude de faire ceci en ASP classique simplement avec l'objet de demande, mais Request.ToString() ne fonctionne pas. Et le code suivant retourne une chaîne vide:Comment faire pour vider les en-têtes de demande ASP.NET à la chaîne

using (StreamReader reader = new StreamReader(Request.InputStream)) 
{ 
    string requestHeaders = reader.ReadToEnd(); 
    // ... 
    // send requestHeaders here 
} 

Répondre

73

Jetez un oeil à la propriété Headers dans l'objet de demande.

C#

string headers = Request.Headers.ToString(); 

Ou, si vous le voulez formaté d'une autre manière:

string headers = String.Empty; 
foreach (var key in Request.Headers.AllKeys) 
    headers += key + "=" + Request.Headers[key] + Environment.NewLine; 

VB.NET:

Dim headers = Request.Headers.ToString() 

Ou:

Dim headers As String = String.Empty 
For Each key In Request.Headers.AllKeys 
    headers &= key & "=" & Request.Headers(key) & Environment.NewLine 
Next 
+0

+1 il suffit d'ajouter une ligne pour l'envoyer par email et je pense que c'est la réponse complète (la question a été taguée C# donc je ne pense pas que la version de VB.Net soit essentielle). – amelvin

+0

Le premier extrait KeyValuePair a provoqué une erreur de distribution à l'exécution, donc j'utilise foreach (clé de chaîne dans Request.Headers) en-tête + = key + "=" + Request.Headers [clé] + Environment.NewLine; –

+3

Vous pouvez joindre toutes les données à l'aide de la méthode string.Join: string.Join (Environment.NewLine, Request.Headers.AllKeys.Select (key => string.Format ("Key: {0}, Value: {1}", clé, Request.Headers [clé]))); Cette méthode est plus rapide que votre chaîne parce que.Join est plus efficace pour rejoindre plusieurs objets –

26

Vous pouvez activer le suivi sur la page pour voir les en-têtes, les cookies, les variables de formulaire, querystring etc sans douleur:

ligne Haut de la mise en marche de ASPX:

<%@ Page Language="C#" Trace="true" 
+4

Trace non disponible pour cette configuration: 'est généralement utilisé dans les serveurs web de production dans machine.config vous pouvez en savoir plus sur les valeurs de config ici http://msdn.microsoft.com/fr-fr/library/ms178685.aspx – Kiquenet

Questions connexes