2009-05-15 10 views
6

Dump Ich versuche derzeit, eine Anwendung von asp.net auf PHP zu portieren, aber ich habe gerade eine Wand und brauche eine Hand mit diesem.Wie die gesamten POST-Daten in eine Datei in ASP.NET

Ich brauche eine ASPX BEKOMMT über POST in einer Datei alle Daten zu entleeren, aber ich habe keine Ahnung, wie diese

irgendwelche Ideen zu tun?

Antwort

8

Sie können die InputStream-Eigenschaft von Re verwenden Questobjekt. Dadurch erhalten Sie die Rohdaten der HTTP-Anfrage. Im Allgemeinen möchten Sie dies vielleicht als benutzerdefinierten HTTP-Handler tun, aber ich glaube, Sie können es jederzeit tun.

if (Request.RequestType == "POST") 
{ 
    using (StreamReader reader = new StreamReader(Request.InputStream)) 
    { 
     // read the stream here using reader.ReadLine() and do your stuff. 
    } 
} 
0

Der beste Weg, dies zu tun ist über einige Browser-Plugin wie Fiddler oder LiveHttpHeaders (nur Firefox). Dann können Sie die rohen POST-Daten abfangen.

6

Sie BinaryRead verwenden können, von der Anfrage Körper zu lesen:

Request.BinaryRead 

Oder Sie einen Verweis auf Eingang Stream Objekt erhalten könnte mit:

Request.InputStream 

Dann könnten Sie CopyStream:

using (FileStream fs = new FileStream(...)) 
    CopyStream(fs, Request.InputStream); 
+3

.NET 4.0 hat jetzt eine 'Stream.CopyTo()' Methode. – spoulson

2

Sie könnten eine Proxy-Anwendung wie Fiddler verwenden. Auf diese Weise können Sie alle übertragenen Daten einsehen und bei Bedarf in einer Datei speichern.

+0

perfekt, das zeigt alle Informationen gesendet und empfangen! – Dediqated

5

Wenn Sie nur POST-Daten möchten, können Sie Request.Form.ToString() verwenden, um alle Daten in einer URL-codierten Weise zu erhalten.

if (Request.RequestType == "POST") { 
    string myData = Request.Form.ToString(); 
    writeData(myData); //use the string to dump it into a file, 
}