WCF表示它超过了最大查询字符串值,而不是

时间:2012-09-08 08:53:05

标签: asp.net wcf .net-4.0 webhttpbinding iis-8

我有一个使用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个字符。我错过了什么吗?

1 个答案:

答案 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。