【问题标题】:Where do I set the maximum query string length?我在哪里设置最大查询字符串长度?
【发布时间】:2020-07-29 17:50:23
【问题描述】:

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

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

英文:

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

我这样做了,遵循 documentation 并将最大查询字符串长度从 2048 个字符更改为 4096 个字符。

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

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

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

英文:

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

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

<requestLimits maxQueryString="4096" />

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

【问题讨论】:

  • 检查服务器上的事件日志,它可能会更清楚。您必须确定需要更新哪个 web.config —— 那里可能不会有 maxQueryStringLength,并且需要创建它。 web.config 中的条目应类似于:

标签: iis iis-10


【解决方案1】:

首先,确保您在 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。

【讨论】:

  • 按照此处所述设置这两个值似乎可以解决问题,谢谢(我会接受我一会儿):) 不过,我不确定为什么匿名身份验证在这里是相关的。
  • @O.R.Mapper 如果您的问题得到解决,那么我请求您将建议标记为答案,它将帮助面临类似问题的其他人。
  • 我会,在我之前的评论中看到“我会接受我片刻” - 只要我的同事确认这也适用于他们的系统。
猜你喜欢
  • 2021-12-27
  • 2018-11-11
  • 2013-12-24
  • 2012-04-27
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2012-02-13
  • 2013-05-19
相关资源
最近更新 更多