首页 > 解决方案 > 我在哪里设置最大查询字符串长度?

问题描述

从带有 loooong 查询字符串的 HTTP 请求(在本例中为 2847),我收到错误 404.15 并显示以下消息:

Überprüfen Sie die Einstellung "configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString" 在 der Datei "applicationhost.config" 或 "web.config" 中。

用英语讲:

检查“applicationhost.config”或“web.config”文件中的“configuration/system.webServer/security/requestFiltering/requestLimits@maxQueryString”设置。

我通过遵循文档并将最大查询字符串长度从 2048 更改为 4096 个字符来做到这一点。

显然,上述更改已经产生了影响,因为原始错误消息已经消失。

相反,我现在遇到另一个错误,仍然与最大查询字符串长度有关。这一次,它带有 HTTP 代码 400 并说:

Die Länge der Abfragezeichenfolge für die Anforderung überschreitet den konfigurierten maxQueryStringLength-Wert。

用英语讲:

请求的查询字符串长度超过了配置的 maxQueryStringLength 值。

现在,我已经扫描*.config了整个磁盘上的所有文件以查找 substring 的任何出现maxQueryString。总共只有一次这样的事件,它是Web.config我的 IIS 默认网站的文件,上面写着

<requestLimits maxQueryString="4096" />

因此,必须有其他因素影响最大查询长度 - 我还能在哪里配置此设置?

标签: iisiis-10

解决方案


首先,确保您在 iis 中启用了匿名身份验证:

在 web.config 文件中设置以下代码:

<system.web>

   <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
                                ……
</system.web>

<system.webServer>
    <security>
    <requestFiltering>
      <requestLimits maxUrl="10999" maxQueryString="2097151" />
    </requestFiltering>
  </security>
</system.webServer>

注意:设置值比您的要求高一点。上面提到的只是一个例子。在根文件夹配置文件中设置此值。并在进行更改后重新启动 iis。


推荐阅读