我有一个 C# 中的 MVC3 站点,我有一个从 JavaScript 函数提供查询参数的特定视图,该函数通过
window.location.href = "../ActionName?" + 查询字符串;
query_string 是 JavaScript 函数构建的动态查询参数字符串。
造成这种奇怪现象的原因是,有时同一函数将 URL 传递到 ASP.Net Web 表单,因为它必须使用 reportviewer 控件,替代操作是保存一些参数,在这种情况下它传递到视图。 (如果没有意义可以详细说明)
整个事情工作正常,直到我将 [Authorize] 引入到操作方法中。 如果到位就会中断,没有就可以正常工作,并且 [授权] 在所有其他方法上都可以正常工作。
本例中的整个 URL 长度为 966 个字符,经过研究,默认情况下 maxQueryStringLength 值似乎为 2048,但可以覆盖为整数类型的任何值,所以只是为了笑我添加了
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
key下的web配置文件的key。
那里没有快乐,所以我变得可笑并达到了4096,仍然没有快乐。
现在整个 URL 长度为 966 个字符,授权属性不能认真添加另外 1082-3130 个字符,所以我如何确定实际错误是什么,或者为什么设置没有生效。
VS2010专业版SP1
在项目的根目录
web.config
中,在 system.web
节点下:
<system.web>
<httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
...
此外,我必须将其添加到
system.webServer
节点下,否则我的长查询字符串会出现安全错误:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxUrl="10999" maxQueryString="2097151" />
</requestFiltering>
</security>
...
当未经授权的请求传入时,整个请求都会进行 URL 编码,并作为查询字符串添加到授权表单的请求中,因此我可以根据您的情况了解这可能会在哪里导致问题。
根据 MSDN,修改 web.config 中重置 maxQueryStringLength 的正确元素是
<httpRuntime>
元素内的 <system.web>
元素,请参阅httpRuntime 元素(ASP.NET 设置架构)。尝试修改该元素。
我使用 datatables.net 时遇到此错误
我修复了在 DataTable() 的 te 属性中更改默认 ajax Get 到 POST 的问题
"ajax": {
"url": "../ControllerName/MethodJson",
"type": "POST"
},
对于可能遇到此问题并且上述任一选项都无法解决的其他人,这对我有用。
1. Click on the website in IIS
2. Double Click on Authentication under IIS
3. Enable Anonymous Authentication
我禁用了此功能,因为我们使用自己的身份验证,但这会导致同样的问题,并且接受的答案没有任何帮助。
我遇到了这个问题,我像这样解决了它(属性 maxRequestLength、maxQueryStringLength 和 maxQueryString 的值对于您的应用程序可能有所不同):
在 web.config 中
将此行放入
<system.web>
<httpRuntime targetFramework="4.5" maxRequestLength="10240" maxQueryStringLength="32768" />
</system.web>
并在system.webServer中写入
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
</system.webServer>
这对我有用。我希望这对某人有帮助。