我正在构建一个站点,我想在其中从 textarea 元素的值创建一个文件客户端。
我有执行此操作的代码,但我收到此错误
HTTP 错误 404.15 - 未找到 请求过滤模块配置为拒绝查询字符串过长的请求。
有没有办法覆盖它,以便我能够处理任何大小的请求?
如果没有,有没有办法在不使用文件系统/活动 x 对象的情况下生成文件客户端?
谢谢
我正在构建一个站点,我想在其中从 textarea 元素的值创建一个文件客户端。
我有执行此操作的代码,但我收到此错误
HTTP 错误 404.15 - 未找到 请求过滤模块配置为拒绝查询字符串过长的请求。
有没有办法覆盖它,以便我能够处理任何大小的请求?
如果没有,有没有办法在不使用文件系统/活动 x 对象的情况下生成文件客户端?
谢谢
将以下内容添加到您的 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)只是示例。您不必使用这些确切的值。
就我而言(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
.
更多关于它的信息:
我尝试<system.webServer>
按照@MattVarblow的建议设置它,但它没有用......这是因为我在装有 Windows 8 的开发机器上使用 IIS Express(基于 IIS 8)。
当我将我的应用程序部署到生产环境(带有 IIS 7 的 Windows Server 2008 R2)时,IE 10 开始在带有长查询字符串的 AJAX 请求中返回 404 错误。然后我认为问题与查询字符串有关,并尝试了@MattVarblow 的答案。它只适用于 IIS 7。:)
需要检查的其他内容:如果您的站点使用 MVC,如果您将 [Authorize] 添加到您的登录控制器类,就会发生这种情况。它无法访问登录方法,因为它没有被授权,所以它重定向到登录方法-->繁荣。
当您在 ajax 调用参数中传递大字符串时,它也会产生错误。
因此,始终在 ajax 中使用类型 post 将100% 解决您的问题 ,并且无需在 web.config 中设置长度。
// var UserId= 1000 个用户 ID 的数组
$.ajax({ global: false, url: SitePath + "/User/getAussizzMembersData", "data": { UserIds: UserId}, "type": "POST", "dataType": "JSON" }}
对于在使用 IIS Express 从 Visual Studio 运行应用程序时遇到这种情况的人,首先您必须找到应用程序正在使用的 applicationhost.config 文件。请参阅https://stackoverflow.com/a/41553876/1849880上的答案,了解如何找到applicationhost.config文件。然后,您可以按照上面的说明更改maxQueryString值。
我必须将 [AllowAnonymous] 添加到登录页面的 ActionResult 函数中,因为用户尚未经过身份验证。
如果您的网站正在使用身份验证,但您没有在 IIS 中设置正确的身份验证方法(例如 Basic、Forms 等),那么浏览器将陷入重定向循环。这会导致重定向 url 变得越来越长,直到它爆炸。
我在尝试将 ASP Web 应用程序部署到 IIS 8 时遇到了类似的问题。为了解决它,我按照上面的 Matt 和 Leniel 建议做了。但还必须配置我网站的身份验证设置以启用匿名身份验证。这对我有用。
HTTP 错误 404.15 - 未找到 请求过滤模块配置为拒绝查询字符串过长的请求。
要解决此问题,请在源代码中检查Form
标记是否具有method
获取/设置状态的属性。
如果是这样,method
则应删除该属性。