views:

459

answers:

2

I'd like to email myself a quick dump of a GET request's headers for debugging. I used to be able to do this in classic ASP simply with the Request object, but Request.ToString() doesn't work. And the following code returned an empty string:

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

Have a look at the Headers property in the Request object.

C#

var headers = Request.Headers.ToString();

// If you want it formated in some other way.
var headers = String.Empty;
foreach (var key in Request.Headers.AllKeys)
  headers += key + "=" + Request.Headers[key] + Environment.NewLine;

VB.NET:

Dim headers = Request.Headers.ToString()

' If you want it formated in some other way.'
Dim headers As String = String.Empty
For Each key In Request.Headers.AllKeys
  headers &= key & "=" & Request.Headers(key) & Environment.NewLine
Next
Sani Huttunen
+1 Just add a line to email it and I think this is the full answer (the question was tagged C# so I don't think the VB.Net version is essential).
amelvin
First KeyValuePair snippet caused runtime cast error so I'm using foreach (string key in Request.Headers) header += key + " = " + Request.Headers[key] + Environment.NewLine;
FreshCode
+2  A: 

You could turn on tracing on the page to see headers, cookies, form variables, querystring etc painlessly:

Top line of the aspx starting:

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