我正在构建一个网站,我想从textarea元素的值创建一个文件客户端。
我有代码来执行此操作,但我收到此错误
HTTP错误404.15 - 未找到请求过滤模块是 配置为拒绝查询字符串太长的请求。
有没有办法覆盖它,以便我能够处理任何大小的请求?
如果没有,有没有办法在不使用filesystem / active x对象的情况下生成文件客户端?
感谢
答案 0 :(得分:222)
将以下内容添加到您的web.config:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
</system.webServer>
请参阅:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
已更新以反映评论。
requestLimits Element for requestFiltering [IIS Settings Schema]
您可能还需要在web.config中添加以下内容
<system.web>
<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>
请参阅:httpRuntime Element (ASP.NET Settings Schema)
当然,上面配置设置中的数字(32768和65536)只是示例。您不必使用这些确切的值。
答案 1 :(得分:29)
就我而言(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
。
更多相关信息:
Expanding the Range of Allowable URLs
我尝试在<system.webServer>
中设置它@MattVarblow建议,但它不起作用...这是因为我在我的开发机器上使用IIS Express(基于IIS 8)使用Windows 8。
当我将我的应用程序部署到生产环境(带有IIS 7的Windows Server 2008 R2)时,IE 10开始在使用长查询字符串的AJAX请求中返回404错误。然后我认为这个问题与查询字符串有关,并尝试了@ MattVarblow的答案。它只适用于IIS 7. :)
答案 2 :(得分:6)
要检查的其他内容:如果您的站点使用MVC,如果您将[授权]添加到登录控制器类,则会发生这种情况。它无法访问登录方法,因为它未经授权,因此重定向到登录方法 - &gt;热潮。
答案 3 :(得分:0)
我在尝试将ASP Web应用程序部署到IIS 8时遇到了类似的问题。为了解决这个问题,我按照Matt和Leniel的说法进行了修改。但是还必须配置我的站点的身份验证设置以启用匿名身份验证。这对我有用。
答案 4 :(得分:0)
我必须将[AllowAnonymous]添加到我的登录页面中的ActionResult函数,因为用户尚未经过身份验证。
答案 5 :(得分:0)
如果您的网站使用身份验证,但您没有在IIS中设置正确的身份验证方法(例如,基本,表单等),那么浏览器将陷入重定向循环。这会导致重定向网址越来越长,直到它爆炸为止。
答案 6 :(得分:0)
如果在运行IIS 8.5 Web服务器时遇到此问题,则可以使用以下方法。
首先,在您正在使用的IIS站点中找到“请求过滤” 模块,然后双击它...
下一步,您需要右键单击下面显示的白色区域,然后单击名为“编辑功能设置” 的上下文菜单选项。
然后,最后要做的是将“最大查询字符串(字节)” 的值从 2048 更改为更合适的值,例如 5000 满足您的需求。
答案 7 :(得分:0)
当您在ajax调用参数中传递大字符串时,也会产生错误。
因此对于始终使用ajax中的post类型的用户,可以解决您的问题100%,而无需在web.config中设置长度。
// var UserId =包含1000个用户ID的数组
$。ajax({ 全球:假, url:SitePath +“ / User / getAussizzMembersData”, “数据”:{UserIds:UserId}, “ type”:“ POST”, “ dataType”:“ JSON” }}
答案 8 :(得分:0)
对于从 Visual Studio 运行应用程序时遇到这种情况的人,在使用 IIS Express 时,首先您必须找到应用程序正在使用的 applicationhost.config 文件。有关如何找到 applicationhost.config 文件的信息,请参阅 https://stackoverflow.com/a/41553876/1849880 上的答案。然后,您可以按照上述说明更改 maxQueryString 值。
答案 9 :(得分:-1)
HTTP错误404.15 - 未找到请求过滤模块是 配置为拒绝查询字符串太长的请求。
要解决此问题,请检查源代码,Form
标记的属性method
是否为获取/设置状态。
如果是,则应删除method
属性。