2016-04-27 2 views
0

In meinem Code, ich tue unterHttpWebResponse nicht immer vollständige Antwort, wenn Content-Length ist 67722

HttpWebResponse response = (HttpWebResponse)httpWebRequest.GetResponse(); 
Stream dataStream = response.GetResponseStream(); 

string responseFromServer = reader.ReadToEnd(); 
reader.Close(); 
dataStream.Close(); 
response.Close(); 

httpWebRequest wird eine Anforderung POST, deren Antwortgröße in Fiddler nach einer Umleitung 67722. response.ContentLength Feld zurück in meinem Fall ist -1 und Gesamtgröße von responseFromServer ist ungefähr 32695. Es schneidet einfach die restlichen Daten aus der Antwort. Ich habe gesehen, irgendwo zu verwenden maxReceivedMessageSize, aber nicht in der Lage, unser wie es zu tun.

responseFromServer.Length 32695

response.ContentLength -1

response.GetResponseHeader ("Transfer-Encoding") ""

UPDATE: FINAL

Die Antwort kam richtig. Problem war mit meinem Code, wo Parameter, die an die POST-Abfrage gesendet wurden, nicht richtig durch UrlEncoding codiert wurden. Wenn es sich um ASP.net contentpanel control handelt, ist zu beachten, dass es die POST-Abfrage mit Steuernamen mit dem Sonderzeichen '$' sendet. Wir müssen dies codieren mit HttpUtility.UrlEncoding Methode

+0

Ist der Header 'transfer-encoding' in der Antwort auf' chunked' gesetzt? – spender

+0

fügen Sie diese web.config ist –

+0

@spender es zu leeren String bestimmt gesetzt wird durch 'response.GetResponseHeader (" transfer -encoding ")' –

Antwort

0

Wie von Spender erwähnt, überprüfen Sie die Antwortheader..Der Wert für 'ContentLength' ist in den Antwortheadern angegeben und möglicherweise nicht die tatsächliche Länge der Daten; Wenn die Übertragungscodierung "chunked" ist, ist es "normal", contentlength als -1 zu markieren.

Ich bin nicht vertraut mit fiddler..aber vielleicht ist es Dinge zu holen, die die Webresponse nicht ist, wie externe Skripte? Versuchen Sie, die Seite in einem normalen Webbrowser zu laden und "Quelle anzeigen" -> verwenden Sie ein Werkzeug (Ein Textfeld ...), um die Zeichen in der Quelle zu zählen: Ist es tatsächlich 67k oder näher an 32? In ähnlicher Weise, überprüfen Sie den letzten Teil der Daten in 'responseFromServer' .. ist das gleiche wie wenn 'Seitenquelle anzeigen'? dh. beide sind wahrscheinlich (hoffentlich?) </h tml>

+0

Übertragung-Codierung ist nicht als Chunked markiert. Größe ist näher an 67K. Viel Javascript wird heruntergeladen. Der letzte Teil ist nicht dasselbe wie die Quelltextquelle. –

+0

Bitte zeigen Sie die Zeile an, in der Sie "Leser" deklarieren/erstellen. edit: Sie sagen Größe ist näher an 67k; Wie hast du gemessen? Auch, was ist die letzte Daten in 'ResponseFromServer' & was kommt direkt nach dem Anzeigen der Seitenquelle – ABuckau

+0

Ich denke, es ist etwas anderes falsch mit meinem Code. Ich habe die Weiterleitung deaktiviert und dann bemerkt, dass ich auf die Startseite und nicht auf die gewünschte Seite umgeleitet werde. Dies kann etwas mit Cookies und Sitzungsverwaltung zu tun haben. Ich werde darüber hinaus einmal aktualisieren. –

Verwandte Themen