2

我有一个将数据发送到 .NET 应用程序的 iPad 应用程序。iPad 应用程序是由一群将所有请求实现为 GET 而不是 POST 的猴子编写的。

该应用程序现已上线,客户端的数据正在发送超过 20k 个字符的请求,这给了我这个响应(使用 Safari,它已经过测试可以处理至少 80k 个字符的 URL):

通用 414 错误

如果请求超过了 web.config 中的 requestFiltering/maxURL 值,我将得到的不是详细的 IIS 响应,如下所示:

IIS 414.14 错误

由于我收到的是通用错误消息而不是特定于 IIS 的消息,这让我认为这不是由于我可以在配置设置中修复的问题(我将 maxURL 设置为 20 亿,只是为了安全......)

我知道请求应该使用 POST,但我现在真的没有时间重写 iPad 应用程序,而且我所有的研究都只是出现了无用的回复,上面写着“你应该将 GET 请求限制为 2K 个字符” “你应该使用 POST 而不是 GET”。如果这是您唯一的反馈,请不要费心回答。(例如,我知道这个问题及其答案。)

我需要知道是否可以快速解决此问题,直到我有时间以正确的方式进行操作。而且我还想知道是否有人知道来自 iOS 或 IIS 端的硬限制 URL 长度,因为我找不到任何细节。

编辑:我的 httpRuntime 参数也设置为接受超过 20k 个字符。

4

2 回答 2

5

我知道这是一个旧的,但万一有人会像我昨天那样面对它 - 设置 web.config 参数也没有帮助我。我发现的是这篇 MS 文章: http: //support.microsoft.com/kb/820129/en-us
我在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters添加了两个 DWORD 键:

MaxFieldLength = 65534
MaxRequestBytes = 100000

注意:您需要重新启动服务器或至少 HTTP 服务才能使这些密钥正常工作。
重新启动后,我设法发送了一个查询字符串长度最多为〜32k 个字符的请求(不知道为什么只有〜32k,也许是字符编码?)。所以我想这是 Windows 2003 及更高版本中 URL 长度的限制。

于 2014-06-18T10:15:05.290 回答
-1

如果您在多个客户端中看到此问题,则可能是您的服务器设置。在 .NET 4.0 的httpRuntime部分中,两者的最大值maxUrlLengthmaxQueryStringLength是 32 位有符号整数,或2147483647.

<httpRuntime maxUrlLength="2147483647" maxQueryStringLength="2147483647" />
于 2013-05-17T02:06:49.660 回答