我在 C# 中有一个 MVC3 站点,我有一个特定的 View 被从 JavaScript 函数提供查询参数,该函数通过
window.location.href = "../ActionName?" + query_string;
query_string 是由 JavaScript 函数构建的动态查询参数字符串。
这种奇怪的原因是有时相同的函数将 URL 传递给 ASP.Net 网络表单,因为它必须使用 reportviewer 控件,替代操作是在此保存一些参数如果它传递给 View 。 (如果没有意义可以详细说明)
在我将 [Authorize] 引入 action 方法之前,整个过程都很好。 如果它到位就会中断,没有它也可以正常工作,并且 [Authorize] 在所有其他方法上都可以正常工作。
在这种情况下,整个 URL 的长度为 966 个字符,经过研究,似乎 maxQueryStringLength 值默认为 2048,但可以覆盖为整数类型的任何值,所以只是为了咧嘴一笑,我添加了
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
key 下的 web 配置文件的键。
那里没有快乐,所以我变得可笑并使它成为 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>
...
关于c# - 使用 [Authorize] 时请求超过配置的 maxQueryStringLength,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159321/