我们必须通过 URL 向 ASP.Net Web 服务发送一个大数据包。由于某些原因,我们不能使用 POST,因此我们对 XML 包进行 URL 编码,并向服务发出 GET 请求。
http://service.example.com/collect?content=AAAAAAAA...(+5000 characters)
服务响应
错误 404 - 找不到文件或目录。
我已经读到 max-content-length-exceeded 没有错误代码,所以 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?这是标头可以具有的最大长度,但没有考虑我的设置。