我有一个使用ASP.NET 4 / IIS 8的WCF服务(超过webHttpBinding
),我使用带有GET
的JSON与它进行通信时没有任何问题。但是,今天我需要实现一个发送大型查询字符串的方法(大约3000个字符,不长但比我使用的长)。我调用了该服务并立即收到404错误,甚至没有在我的调试机器中插入我的代码。我想到的第一件事是最大查询字符串长度限制。我已将此添加到我的web.config:
<system.webServer>
<directoryBrowse enabled="true" />
<security>
<requestFiltering>
<requestLimits maxQueryString="8000"></requestLimits>
</requestFiltering>
</security>
</system.webServer>
现在,我在调用服务时收到此服务器错误:The length of the query string for this request exceeds the configured maxQueryStringLength value.
很奇怪,我尝试了其他值,例如200000
,超过了我的查询字符串和URL,这是关于3000个字符。我错过了什么吗?
答案 0 :(得分:4)
也许在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。