web-dev-qa-db-fra.com

Comment vider les en-têtes de demande ASP.NET dans une chaîne

Je voudrais m'envoyer un rapide vidage des en-têtes d'une demande GET pour le débogage. J'avais l'habitude de le faire en classique ASP simplement avec l'objet Request, mais Request.ToString() ne fonctionne pas. Et le code suivant a renvoyé une chaîne vide:

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

Jetez un œil à la propriété Headers dans l'objet Request.

C #

string headers = Request.Headers.ToString();

Ou, si vous souhaitez le mettre en forme 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
104

Vous pouvez activer le traçage sur la page pour voir les en-têtes, cookies, variables de formulaire, chaîne de requête, etc. sans douleur:

Ligne supérieure du départ aspx:

<%@ Page Language="C#" Trace="true" 
28
amelvin

Vous pouvez utiliser,

string headers = Request.Headers.ToString(); 

Mais il renverra une chaîne codée URL afin de le décoder, utilisez le code ci-dessous,

String headers = HttpUtility.UrlDecode(Request.Headers.ToString()) 
1
Rakesh Chaudhari