3

我需要传入一个很长的查询字符串值(我理解,这本身就是一个有问题的做法),并且我无法让它在我的Appharbor应用程序实例上生效。

在本地,我已对我的 web.config 进行了此更改,并确认相关 URL 在本地有效:

<httpRuntime maxQueryStringLength="2097151"/>

并确保它存在于我的 Web.Release.config 转换后生成的 web.config 中。也就是说,当我推送到 AppHarbor 时,转换应该会捡起它......但我仍然遇到这个异常:

The length of the query string for this request exceeds the configured maxQueryStringLength value.

堆栈跟踪:

at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

有任何想法吗?谢谢你的帮助。

4

2 回答 2

6

我最初的测试是针对 Cassini(VS 2010 的内置 Web 服务器)进行的。我在本地推送到 IIS 7.5 并发现此错误:

HTTP Error 404.15 - Not Found
The request filtering module is configured to deny a request where the query string is too long.

出现是因为我没有在<system.webServer>我的 web.config 部分中指定 maxQueryLength 以及<httpRuntime>. 所以答案是同时指定<system.web><system.webServer>部分:

<system.web>
   <httpRuntime maxQueryStringLength="2097151"/>
</system.web>

进而:

<system.webServer>
   <security>
     <requestFiltering>
       <requestLimits maxQueryString="2097151"/>
     </requestFiltering>
   </security>
</system.webServer>

当我将此版本的配置推送到 AppHarbor 时,一切都很好。希望这可以帮助。

于 2012-01-20T15:26:47.683 回答
0

请记住,HTTP.SYS 也有其自身的限制!他们在这里描述:http: //support.microsoft.com/kb/820129

于 2014-06-11T02:19:53.460 回答