请求在使用[授权]时超出配置的maxQueryStringLength
我在C#中有一个MVC3站点,我有一个特定的视图从JavaScript函数提供查询参数,该函数通过重定向到站点
window.location.href =“../ActionName?” + query_string;
query_string是由JavaScript函数构建的动态查询参数字符串。
造成这种奇怪的原因是,有时同一个函数将URL传递给一个ASP.Net webform,因为它不得不使用reportviewer控件,在这种情况下,备用动作是保存一些参数,传递给视图。 (如果没有意义,可以详细说明)
整个事情工作正常,直到我介绍[授权]的行动方法。 如果存在就会中断,没有正常工作,并且[授权]可以在所有其他方法上正常工作。
在这种情况下,整个URL长度为966个字符,经过研究,似乎默认情况下maxQueryStringLength值为2048,但可以重写为任何整数类型的值,所以只需要添加
<security>
<requestFiltering>
<requestLimits maxQueryString="2048"></requestLimits>
</requestFiltering>
</security>
密钥下的Web配置文件的关键。
在那里没有快乐,所以我变得荒谬可笑,成功了4096,依然没有快乐。
现在整个URL长度为966个字符,authorize属性不能认真添加另外的1082-3130个字符,那么我怎么才能确定错误实际是什么,或者为什么设置没有生效。
VS2010 Pro SP1
当一个未经授权的请求进入时,整个请求都是URL编码的,并且作为查询字符串添加到授权表单的请求中,所以我可以看到这可能导致您的情况出现问题。
根据MSDN,要修改以重置web.config中的maxQueryStringLength的正确元素是<system.web>
元素中的<httpRuntime>
<system.web>
元素,请参阅httpRuntime元素(ASP.NET设置架构)。 尝试修改该元素。
在您的项目的根web.config
中,在system.web
节点下:
<system.web>
<httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" />
...
另外,我必须在system.webServer
节点下添加它,否则我的长查询字符串出现安全错误:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxUrl="10999" maxQueryString="2097151" />
</requestFiltering>
</security>
...
我有这个错误使用datatables.net
我修改了默认的ajax在DataTable的属性中获取POST()
"ajax": {
"url": "../ControllerName/MethodJson",
"type": "POST"
},
链接地址: http://www.djcxy.com/p/42013.html
上一篇: request exceeds the configured maxQueryStringLength when using [Authorize]