2017-02-23 3 views
0

erstelle ich eine WebRequest in C#:Wie kann ich feststellen, ob meine WebRequest voll ist?

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL"); 

Die URL eine Anforderung ist, und groß werden kann. Tatsächlich habe ich, je nachdem, was der Benutzer tut, keine Kontrolle über die Größe.

Um einen Fall zu vermeiden, in dem die Anfrage zu lang ist, möchte ich es analysieren.

Was ist die maximale Länge von string kann ich verwenden, um eine gültige WebRequest zu erstellen?

Antwort

1

Sie werden durch den Server eingeschränkt, der die Anfrage empfängt, die je nach Server und Konfiguration variieren kann. Als Beispiel wird Apache bis zu einer maximalen Länge von ungefähr ~ 8100 Zeichen DEFAULT, aber das ist nur der Standard. Eine gute Faustregel ist ~ 2000 Zeichen, da dies die meisten Browser maximal ausmacht. Was die HTTP-Spezifikation betrifft, ist sie unbegrenzt, aber Sie werden feststellen, dass jeder Server sie beliebig einschränken kann. Der Uri wird es auf ungefähr ~ 65k Zeichen begrenzen, wie in einer anderen Antwort bemerkt.

SO Frage über die maximale Länge von Apache URL: What is apache's maximum url length?

SO Frage nach Browser Grenze: What is the maximum length of a URL in different browsers?

0

Intern wird diese URL-Zeichenfolge in Uri Klasseninstanz analysiert - zweite Überladung von WebRequest.Create akzeptiert Uri Instanz aufgerufen wird. Und Sie erhalten UriFormatException wenn:

Die Länge uriString überschreitet 65.519 Zeichen oder die Länge des Systems in uriString angegebenen überschreitet 1023 Zeichen.

Quelle: Uri Constructor (String) MSDN

Nicht alle Browser unterstützen so lange uri aber wenn Sie Web-Anfragen erstellen programmaticaly, werden Sie nur auf Servergrenzen hängen.

1

Nach den RFC7230 gibt es keine Begrenzung für die Größe URL und legt nahe,

dass alle HTTP-Absender und -Empfänger mindestens Anforderungszeilenlängen von 8000 Oktetts unterstützen.

Aber es gibt körperliche Einschränkung für WebRequest, die in einem maximum of 65519 chars

1

Die Nutzungsgrenze bestehen, wie beschrieben in this answer, etwa 2000 Zeichen ist.

Wenn Sie viele Parameter über die URL senden möchten, ist die Verwendung eines POST möglicherweise eine Lösung, die besser zu Ihren Anforderungen passt. Auf diese Weise wird die tatsächliche URL nicht außer Kontrolle geraten und der Körper Ihrer Anfrage hat ein Limit, das viel, viel höher ist.

Verwandte Themen