157

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

我有执行此操作的代码,但我收到此错误

HTTP 错误 404.15 - 未找到 请求过滤模块配置为拒绝查询字符串过长的请求。

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

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

谢谢

4

10 回答 10

277

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

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

看:

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

更新以反映评论。

requestFiltering [IIS 设置架构] 的 requestLimits 元素

您可能还必须在 web.config 中添加以下内容

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

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

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

于 2012-07-24T17:50:28.497 回答
34

就我而言(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。:)

于 2013-05-24T07:41:01.170 回答
9

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

于 2018-10-08T17:18:57.893 回答
6

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

于 2016-08-05T01:55:27.300 回答
1

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

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

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

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

于 2019-11-02T05:40:12.353 回答
0

对于在使用 IIS Express 从 Visual Studio 运行应用程序时遇到这种情况的人,首先您必须找到应用程序正在使用的 applicationhost.config 文件。请参阅https://stackoverflow.com/a/41553876/1849880上的答案,了解如何找到applicationhost.config文件。然后,您可以按照上面的说明更改maxQueryString值。

于 2021-08-06T01:22:50.657 回答
0

我必须将 [AllowAnonymous] 添加到登录页面的 ActionResult 函数中,因为用户尚未经过身份验证。

于 2018-02-20T17:13:12.027 回答
0

如果您的网站正在使用身份验证,但您没有在 IIS 中设置正确的身份验证方法(例如 Basic、Forms 等),那么浏览器将陷入重定向循环。这会导致重定向 url 变得越来越长,直到它爆炸。

于 2018-02-21T13:05:08.630 回答
0

我在尝试将 ASP Web 应用程序部署到 IIS 8 时遇到了类似的问题。为了解决它,我按照上面的 Matt 和 Leniel 建议做了。但还必须配置我网站的身份验证设置以启用匿名身份验证。这对我有用。

于 2016-05-31T10:42:08.640 回答
-1

HTTP 错误 404.15 - 未找到 请求过滤模块配置为拒绝查询字符串过长的请求。

要解决此问题,请在源代码中检查Form标记是否具有method获取/设置状态的属性。

如果是这样,method则应删除该属性。

于 2014-05-14T04:52:52.380 回答