2017-02-23 84 views
0

我在C#创建一个WebRequest如何知道我的WebRequest是否已满?

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

的URL是一个请求,并且可以得到大。实际上,根据用户的操作,我无法控制尺寸。

为了防止请求太长的情况,我想解析它。

是我可以用来创建有效的WebRequest的最大长度string

回答

1

您将受到接收请求的服务器的限制,服务器和配置会有所不同。作为一个例子,Apache将DEFAULT的最大长度约为8100个字符,但这只是默认值。一个好的经验法则是〜2000个字符,因为这是大多数浏览器最多可以使用的。至于HTTP规范,它是无界的,但你会发现任何服务器都可以按照他们的意愿来限制它。如另一个答案中所指出的,Uri会将其限制为约65k字符。

关于Apache URL的最大长度SO问题:What is apache's maximum url length?

SO有关浏览器的限制问题: What is the maximum length of a URL in different browsers?

0

内部那个url字符串被解析为Uri类实例 - 第二个重载WebRequest.Create它接受Uri实例被调用。你会得到UriFormatException如果:

uriString中的长度超过65519个字符或uriString中指定的方案的长度超过1023个字符。

来源:Uri Constructor (String) MSDN

并非所有的浏览器都支持这样长的URI,但如果你正在创建的Web请求programmaticaly,您将在服务器限制只依赖。

1

RFC7230没有限制的URL的大小和建议

所有HTTP发件人和收件人至少支持 8000个字节的请求行长度。

但有物理限制为包括在maximum of 65519 chars

1

有用限制,如在this answer描述的WebRequest,为约2000个字符。

如果您想通过URL发送很多参数,使用POST可能是更适合您需求的解决方案。通过这种方式,实际的URL不会失去控制,并且请求的主体具有更高的限制。