我们必须通过网址向ASP.Net web服务发送一个大数据包。由于某些原因,我们不能使用POST,所以我们对XML包进行URL编码,并向服务发出GET请求。
http://service.example.com/collect?content=AAAAAAAA...(+5000 characters)服务响应为
错误404 -找不到文件或目录。
我已经读过,没有错误代码的最大内容长度-超过,所以IIS发送回这个404错误。知道了这一点,我以下列方式更改了配置,以允许大请求:
更改查询字符串长度、最大URL长度、最大请求长度和停用验证
<httpRuntime
requestValidationMode="2.0"
maxQueryStringLength="262144000"
maxUrlLength="262144000"
maxRequestLength="262144000" />
...
<pages validateRequest="false" />
...
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="262144000" />
</requestFiltering>
</security>
</system.webServer>我仍然收到同样的错误。如何使用非常大/长的URL向我的web服务提出请求?
更新1
我不会发图像的。内容如下:
<packet date="1243235246436">
<param type="1" id="45">
5
</param>
</packet>没有新的行字符和URL编码。
更新2
在IIS请求过滤中将限制设置为较大数目之后,404现在被转换为
HTTP错误400请求头的大小太长。
这是因为标题的大小现在太大了。尝试按照这文章中的说明添加MaxFieldLength和MaxRequestBytes注册表项,但我仍然被限制在16k URL长度。我能做些什么才能发送1,000,000个长URL?这有可能吗?我能做些什么来发送至少65k的长URL?这是一个标题可以具有的最大长度,但是我的设置没有被考虑。
发布于 2013-05-25 09:27:15
maxQueryStringLength的MSDN文档还讨论了在非常长的URL情况下的IIS过滤。你查过这了吗?这里提到的属性名称有一点不同:maxQueryString,maxUrl。
发布于 2013-05-25 11:10:01
GET请求仅受浏览器对URL字符串长度的限制。在IE中是2,083个字符,减去实际路径中的字符数。其他浏览器对URL字符串的长度没有明确的限制。这些文章可能对你有帮助。
http://www.boutell.com/newfaq/misc/urllength.html
http://support.microsoft.com/kb/q208427
RFC 2616,“超文本传输协议-- HTTP/1.1”没有指定任何URL长度的要求,因此浏览器可以自由地规定他们认为合适的内容。
https://stackoverflow.com/questions/16748122
复制相似问题