如何配置 web.config 以允许任何长度的请求

IT技术 c# javascript asp.net-mvc web-config query-string
2021-01-28 02:02:09

我正在构建一个站点,我想在其中根据 textarea 元素的值创建文件客户端。

我有执行此操作的代码,但出现此错误

HTTP 错误 404.15 - Not Found 请求过滤module被配置为拒绝查询字符串太长的请求。

有没有办法覆盖它,以便我能够处理任何大小的请求?

如果没有,有没有办法在不使用文件系统/活动 x 对象的情况下生成文件客户端?

谢谢

6个回答

将以下内容添加到您的 web.config:

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxQueryString="32768"/>
    </requestFiltering>
  </security>
</system.webServer>

看:

http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits

更新以反映评论。

requestLimits 元素用于 requestFiltering [IIS 设置架构]

您可能还需要在 web.config 中添加以下内容

<system.web>
    <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>

请参阅:httpRuntime 元素(ASP.NET 设置架构)

当然,上面配置设置中的数字(32768 和 65536)只是示例。您不必使用这些确切的值。

注意:<httpRuntime>标签位于<system.web> 下: <system.web><httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/></system.web>
2021-03-17 02:02:09
nnn 是您希望允许的最大字符串长度,例如 32768
2021-03-21 02:02:09
不起作用,请参阅此stackoverflow.com/questions/31624710/...
2021-03-29 02:02:09
这对我来说是不够的。我还必须将其添加到 system.web 部分:<httpRuntime maxQueryStringLength="8192"/>
2021-04-03 02:02:09
我分别尝试了每一个,在 system.webServer 下设置安全节点,然后删除并将属性添加到 httpRuntime 节点。我绝对需要两者都工作。非常感谢!
2021-04-10 02:02:09

就我而言(Visual Studio 2012 / IIS Express / ASP.NET MVC 4 app / .Net Framework 4.5)经过 30 分钟的反复试验后,真正起作用的是maxQueryStringLength<httpRuntime>标签中设置属性

<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />

maxQueryStringLength默认为2048.

更多关于它的信息:

扩大允许的 URL 范围


我尝试<system.webServer>按照@MattVarblow 的建议进行设置,但没有奏效……这是因为我在装有 Windows 8 的开发机器上使用 IIS Express(基于 IIS 8)。

当我将我的应用程序部署到生产环境(带有 IIS 7 的 Windows Server 2008 R2)时,IE 10 开始在带有长查询字符串的 AJAX 请求中返回 404 错误。然后我认为问题与查询字符串有关,并尝试了@MattVarblow 的回答。它只适用于 IIS 7。:)

对我来说,是 enable="true" 使魔法发生了:)
2021-04-10 02:02:09

要检查的其他事项:如果您的站点使用 MVC,如果您将 [Authorize] 添加到您的登录控制器类,则可能会发生这种情况。它无法访问登录方法,因为它没有被授权,所以它重定向到登录方法 --> 繁荣。

谢谢!我遇到了这个问题,因为我将菜单/导航移动到了一个部分视图和另一个不允许匿名连接的控制器。
2021-03-19 02:02:09
错误消息虽然是正确的,但与实际问题无关的另一种情况。
2021-03-31 02:02:09
还要检查项目属性,因为 Windows 身份验证可能是“已启用”而匿名身份验证已禁用”。请查看这篇详细文章 -错误(Visual Studio 2013,MVC5):请求过滤module配置为拒绝查询字符串过长的请求
2021-04-02 02:02:09

如果您在运行 IIS 8.5 Web 服务器时遇到此问题,您可以使用以下方法。

首先,在您正在处理的IIS站点中找到“请求过滤”module,然后双击它...

在此处输入图片说明

接下来,您需要右键单击下面显示的白色区域,然后单击名为“编辑功能设置”的上下文菜单选项

在此处输入图片说明

然后最后要做的是将“最大查询字符串(字节)”值从2048更改为更合适的值,例如5000以满足您的需要。

在此处输入图片说明

当您在 ajax 调用参数中传递大字符串时,它也会产生错误。

因此,始终在 ajax 中使用类型 post 将100%解决您的问题 ,无需在 web.config 中设置长度。

// var UserId= 1000 个用户 ID 的数组

$.ajax({ global: false, url: SitePath + "/User/getAussizzMembersData", "data": { UserIds: UserId}, "type": "POST", "dataType": "JSON" }}