我正在建立一个站点,在该站点中我想从textarea元素的值创建文件客户端。
我有执行此操作的代码,但出现此错误
HTTP错误404.15-找不到请求过滤模块配置为在查询字符串过长的情况下拒绝请求。
有没有一种方法可以覆盖它,以便我能够处理任何大小的请求?
如果没有,有没有一种方法可以在不使用filesystem / active x对象的情况下生成客户端文件?
谢谢
我正在建立一个站点,在该站点中我想从textarea元素的值创建文件客户端。
我有执行此操作的代码,但出现此错误
HTTP错误404.15-找不到请求过滤模块配置为在查询字符串过长的情况下拒绝请求。
有没有一种方法可以覆盖它,以便我能够处理任何大小的请求?
如果没有,有没有一种方法可以在不使用filesystem / active x对象的情况下生成客户端文件?
谢谢
Answers:
将以下内容添加到您的web.config中:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxQueryString="32768"/>
</requestFiltering>
</security>
</system.webServer>
看到:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
更新以反映评论。
requestFiltering的requestLimits元素[IIS设置架构]
您可能还需要在web.config中添加以下内容
<system.web>
<httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/>
</system.web>
请参阅:httpRuntime元素(ASP.NET设置架构)
当然,上面的配置设置中的数字(32768和65536)仅是示例。您不必使用那些确切的值。
就我而言(Visual Studio 2012 / IIS Express / ASP.NET MVC 4应用程序/.Net Framework 4.5),经过30分钟的反复试验,真正起作用的是maxQueryStringLength
在<httpRuntime>
标记中设置属性:
<httpRuntime targetFramework="4.5" maxQueryStringLength="10240" enable="true" />
maxQueryStringLength
默认为2048
。
有关此的更多信息:
我尝试<system.webServer>
按照@MattVarblow的建议进行设置,但这没有用……这是因为我在Windows 8的开发机上使用IIS Express(基于IIS 8)。
当我将应用程序部署到生产环境(带有IIS 7的Windows Server 2008 R2)时,IE 10开始在带有长查询字符串的AJAX请求中返回404错误。然后我认为问题与查询字符串有关,并尝试了@MattVarblow的答案。它仅适用于IIS7。:)
还有其他需要检查的地方:如果您的站点使用的是MVC,那么如果您在登录控制器类中添加了[Authorize],就会发生这种情况。由于未经授权,它无法访问登录方法,因此它将重定向到登录方法-> boom。
如果在运行IIS 8.5 Web服务器时遇到此问题,则可以使用以下方法。
首先,在您正在使用的IIS站点中找到“请求筛选”模块,然后双击它...
接下来,您需要右键单击下面显示的白色区域,然后单击名为“编辑功能设置”的上下文菜单选项。
然后,最后要做的就是将“最大查询字符串(字节)”的值从2048更改为更合适的值,例如5000。