asp.net - WCF 说它超过了最大查询字符串值,但实际上没有

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

我有一个使用 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/

相关文章:

javascript - Google map 标记中的自定义描述

asp.net - Asp net System.Web.CachedPathData.GetPhysicalPath(VirtualPath virtualPath)异常

c# - 如何通过用户凭据访问 AD FS 声明?

.net - 创建自定义 CodeAccessSecurityAttribute 会导致编译异常

asp.net-mvc - Elmah,转换为 .Net4 vs2010,在服务器 2008 上运行,不起作用

asp.net - <p> 标签是否有 ASP.NET WebControl?

linq - ASP.NET MVC 2/.NET 4/Razor - 不能在 ViewModel 成员上使用 Any() 扩展方法

asp.net - "Too Many Characters in String literal"消息来自哪里?

asp.net - 如何用今天的日期 VB.Net 填充文本框类型的日期

asp.net - Azure 云服务的 Web Config 覆盖