2010-04-13 10 views
34

Me gustaría enviarme un correo electrónico con un volcado rápido de los encabezados de una solicitud GET para la depuración. Solía ​​ser capaz de hacer esto en ASP clásico simplemente con el objeto Request, pero Request.ToString() no funciona. Y el siguiente código devuelve una cadena vacía:Cómo volcar ASP.NET Solicitar encabezados a la cadena

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

Respuesta

73

Tener un vistazo a la propiedad Headers en el objeto Request.

C#

string headers = Request.Headers.ToString(); 

O, si lo desea el formato de alguna otra manera:

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() 

O:

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

+1 Sólo añadir una línea para enviarlo por correo electrónico y creo que esta es la respuesta completa (la pregunta fue etiquetada como C#, así que no creo que la versión de VB.Net sea esencial). – amelvin

+0

Primer fragmento de KeyValuePair provocó un error en el lanzamiento del tiempo de ejecución, así que estoy utilizando foreach (clave de cadena en Request.Headers) header + = key + "=" + Request.Headers [key] + Environment.NewLine; –

+3

Puede unir todos los datos utilizando una cadena. Método de unión: cadena. Unir (Environment.NewLine, Request.Headers.AllKeys.Select (key => string.Format ("Clave: {0}, Valor: {1}", clave, Request.Headers [key]))); Este método es más rápido que tu porque string.Join es más efectivo para unir varios objetos –

26

Se puede activar el rastreo en la página para ver los encabezados, las galletas, las variables de formulario, etc cadena de consulta sin dolor:

Línea superior de la partida aspx:

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

Rastreo no disponible para esta configuración: '' se usa típicamente en servidores web de producción en machine.config puede leer más acerca de la herencia de valores de configuración aquí http://msdn.microsoft.com/en-us/library/ms178685.aspx – Kiquenet

Cuestiones relacionadas