c# - 使用 [Authorize] 时请求超过配置的 maxQueryStringLength

标签 c# javascript asp.net-mvc-3

enter image description here
我在 C# 中有一个 MVC3 站点,我有一个特定的 View 被从 JavaScript 函数提供查询参数,该函数通过

重定向到该站点

window.location.href = "../ActionName?" + query_string;

query_string 是由 JavaScript 函数构建的动态查询参数字符串。

这种奇怪的原因是有时相同的函数将 URL 传递给 ASP.Net 网络表单,因为它必须使用 reportviewer 控件,替代操作是在此保存一些参数如果它传递给 View 。 (如果没有意义可以详细说明)

在我将 [Authorize] 引入 action 方法之前,整个过程都很好。 如果它到位就会中断,没有它也可以正常工作,并且 [Authorize] 在所有其他方法上都可以正常工作。

在这种情况下,整个 URL 的长度为 966 个字符,经过研究,似乎 ma​​xQueryStringLength 值默认为 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/

相关文章:

c# - LINQ to SQL [npgsql] 从 SelectMany 生成不正确的查询

c# - 获取 T 数组的类型,而不指定 T - Type.GetType ("T[]")

c# - 如何检查域中是否存在 Windows 用户帐户名?

javascript - 有没有办法通过http直接加载下载图像到内存?

javascript - 具有不同 Controller 的选项卡

javascript - parseInt 方法的第二个参数(基数)

Jquery 对话框和带有 IValidatableObject mvc3 的部分 View

c# - Fluent 验证中的本地化消息 (MVC3)

c# - 净核心 : Are MVC Controllers default Singleton?

asp.net-mvc-3 - ASP.NET MVC 3 和 jquery.unobtrusive-ajax.min.js