我有一个使用 ASP.NET 4/IIS 8 的 WCF 服务(通过 webHttpBinding
),使用 JSON 和 GET
与它通信没有任何问题。然而,今天我需要实现一个发送大查询字符串的方法(大约 3000 个字符,不是那么长,但比我一直使用的要长)。我调用该服务并立即收到 404 错误,甚至没有在我的调试机器上进入我的代码。我首先想到的是最大查询字符串长度限制。我已将其添加到我的 web.config 中:
<system.webServer>
<directoryBrowse enabled="true" />
<security>
<requestFiltering>
<requestLimits maxQueryString="8000"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
现在,当我调用该服务时出现此服务器错误:此请求的查询字符串的长度超过了配置的 maxQueryStringLength 值。
很奇怪,我尝试了其他值,例如200000
,超过了我的查询字符串和 URL,大约有 3000 个字符。我错过了什么吗?
最佳答案
也许在 the httpRuntime element 中设置 maxQueryStringLength
.
有两个配置设置有点困惑,但我相信它们可以解释如下:
httpRuntime
maxQueryStringLength 属性是 ASP.NET 4 的新增属性,用于配置 ASP.NET HTTP 运行时可以处理的最大查询字符串长度。在 ASP.NET 4 之前,这是一个固定值 2048;现在可以增加了。system.web/security/requestFiltering
maxQueryStringLength 属性是 IIS 7 设置,允许管理员限制最大查询字符串长度。此设置并非特定于 ASP.NET。
关于asp.net - WCF 说它超过了最大查询字符串值,但实际上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329385/