请求在使用[授权]时超出配置的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]

下一篇: Whitespaces in svg text in Internet explorer