HTTP错误404.15-未找到
HTTP错误404.15-未找到
请求过滤模块被配置为拒绝查询字符串过长的请求。
我遇到了以上错误,尝试了几乎一切但没有运气。
我的项目是在Visual Studio 2013上的MVC4。
我已确保以下内容是正确和尝试过的。
- 我的类上没有[Authorize]属性,只有[AllowAnonymous]属性。
- 我在配置文件中添加了maxQueryStringLength="32768" maxUrlLength="65536"。
- 我添加了
-->
- 我的控制器中的登录操作上有[AllowAnonymous]属性。
- 在Visual Studio中调试模式或非调试模式下运行应用程序时没有问题。
- 这是我的路由配置:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
- 这是我在Web服务器上遇到的错误。
HTTP错误404.15 -未找到的错误原因是请求筛选模块配置为拒绝查询字符串过长的请求。解决方法有两种:
1. 清除控制器方法中的returnUrl
参数。
2. 在web.config
文件中添加以下内容:
对于这种情况,建议选择第一种解决方法,因为这只是代码中的一个错误,可以轻松修复,而无需更改IIS或其他配置文件。可以参考[此帖子](https://stackoverflow.com/questions/11636386)了解有关请求查询字符串限制的更多信息。
感谢您的回复。我已经将<system.webServer> <security> <requestFiltering> <requestLimits maxQueryString="32768"/> </requestFiltering> </security> </system.webServer>添加到Web.config,但我收到另一个错误:查询字符串的长度超过了配置的maxQueryStringLength值。这是为什么?更简单的方法是修复控制器中的代码。
在您的控制器中,必须有一个类似于[HttpPost] Login();
的方法,它应该返回一个带有returnUrl
参数的Action
。而不是每次向该参数添加内容,清除该值即可。这样应该只会存储最后一个returnUrl
值,而不会使您的请求URL变得庞大。
我已经能够修复这个问题,感谢您的帮助。
HTTP Error 404.15 - Not Found 是由于请求的URL超过了服务器的限制而导致的错误。
要解决这个问题,可以通过插入或更新web.config文件来修改服务器的配置。具体方法如下:
1. 打开web.config文件,可以使用任何文本编辑器进行编辑。
2. 在
<system.webServer> <security> <requestFiltering> <requestLimits maxQueryString="3000" maxUrl="1000" /> </requestFiltering> </security> </system.webServer> <system.web> <httpRuntime maxQueryStringLength="32768" maxUrlLength="65536"/> </system.web>
3. 保存并关闭web.config文件。
通过以上步骤,我们在web.config文件中添加了一些配置项来修改服务器的限制。其中,maxQueryString和maxUrl属性用于限制查询字符串和URL的最大长度,以防止超过服务器的限制。
保存并应用以上修改后,服务器将会接受符合配置限制的URL请求,从而解决HTTP Error 404.15 - Not Found错误。