请求筛选模块被配置为拒绝包含的查询字符串过长的请求。

仔细观察,发现请求的url是酱紫的:

http://localhost:58228/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253

原来是Account/Login在return url里一直重复,难怪请求字符串过长呢!

检查web.config发现如下配置:

<authorization>
      <deny users="?" />
    </authorization>

这表示拒绝匿名用户访问

再看AccountController中的代码:

[AllowAnonymous]
        public ActionResult Login(string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            return View();
        }

前面的标注又是允许匿名,矛盾华丽丽的产生了!

web.config中的那段代码可以删么?删了不等于国门大开么!

AccountController中的[AllowAnonymous] 也不能删,否则匿名用户不能访问登录页面,难道你想活活的急死他么?

怎么办?

其实要换个思路来看这个问题,如果我在web.config中配置了loginUrl,那么自然而然的,它指向的登录页面默认就应该是允许匿名的,所以应该从<deny users="?" /> 中排除。

实际上,发现web.config中已经包含了这样的配置

<forms loginUrl="~/Pages/HomePage.html"
        name=".ASPXFORMSAUTH" />

问题是,为什么匿名访问时,页面不是跳转到~/Pages/HomePage.html而是跳到/Account/Login 呢?

App_Start\Startup.Auth.cs中发现这样一行代码:

LoginPath = new PathString("/Account/Login")

将其修改为

LoginPath = new PathString("/Pages/HomePage.html")

搞定!

时间: 2024-12-19 17:22:30

请求筛选模块被配置为拒绝包含的查询字符串过长的请求。的相关文章

IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求

IIS7.0下查询条件太多时,会报错,因为IIS 7对于Query String有长度限制.默认为2048 错误信息如下: TTP 错误 404.15 - Not Found    请求筛选模块被配置为拒绝包含的查询字符串过长的请求. •Web 服务器上的请求筛选被配置为拒绝该请求,因为查询字符串过长.可尝试的操作:•确认 applicationhost.config 或 web.config 文件中的configuration/system.webServer/security/request

HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求(查询条件太多时,会报错,因为IIS 7对于Query String有长度限制。默认为2048)

错误信息如下: TTP 错误 404.15 - Not Found    请求筛选模块被配置为拒绝包含的查询字符串过长的请求. ?Web 服务器上的请求筛选被配置为拒绝该请求,因为查询字符串过长.可尝试的操作:?确认 applicationhost.config 或 web.config 文件中的configuration/system.webServer/security/requestFiltering/[email protected] 设置.链接和更多信息这是一项安全功能.请不要更改此功

解决请求筛选模块被配置为拒绝包含的查询字符串过长的请求

今天再次遇到了标题上的问题.因为之前遇到过该问题,所以开始没有想太多,直接上网查资料,然后就是一翻拷贝 方案1: 在程序的web.config 中system.web 节点 里面插入 <httpRuntime maxRequestLength="999999999" maxQueryStringLength="2097151" />  代码.再次运行,失败 方案2:对IIS 中的applicationHost.config 配置文件进行配置.再次运行,失

IIS7.0以及IIS7.5下HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求。

做了诸多尝试都不行,后来同事想出的办法:将提交表单的方式设为post,就可以了.Url中传递的参数过多, get的方式是把数据在地址栏中明文的形式发送,并且传的数据少.post则不是,而且post可以传递的数据比get多,好像是无限制的. 即做如下所示的改动即可: @using (Html.BeginForm("", "", FormMethod.Post, new { id = "form" }))

URL中含有+号,出现错误“请求筛选模块被配置为拒绝包含双重转义序列的请求”的解决方法

搜索关键词中含空格,提交后被自动转成了“+”号,报如下错误: HTTP 错误 404.11 - Not Found 请求筛选模块被配置为拒绝包含双重转义序列的请求. 解决方法: 在web.config文件的<system.webServer>节点中加入以下配置节点 <system.webServer> <security> <requestFiltering allowDoubleEscaping="True"/> </securi

IIS7.0提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”处理办法

请求筛选模块被配置为拒绝包含双重转义序列的请求.HTTP 错误 404.11 - Not Found 解决办法: 1.单击 开始 . 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然后单击 作为管理员运行 .    注意 如果提示用于管理员密码或用于确认, 键入密码, 或单击 继续 .    2.在 文件 菜单上, 单击 打开 . 在 文件名 框中, 键入 %windir%\system32\inetsrv\config\applicationhost.config然后单击 打

请求筛选模块被配置为拒绝包含双重转义序列的请求

IIS里选择对应的站点, 进入[请求筛选]功能, 选择[查询字符串]选项卡, 点击右侧[编辑功能设置]进行设置

ASP.NET 请求筛选模块被配置为拒绝包含双重转义序列的请求。HTTP 错误 404.11 - Not Found

用户在网站上下载一个RAR压缩包时,崩开这个错误. 解决方法一:打开网站的 web.config 文件,修改如下节点值 <configuration> <system.webServer> <security> <requestFiltering <span style="BACKGROUND-COLOR: #33ff33">allowDoubleEscaping="True"</span>/>

HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求

问题:HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大小时30M). 解决:更改asp.net文件上传大小限制 1. 修改IIS的applicationhost.config 文件位置: %windir%/system32/inetsrv/config/applicationhost.config 找到<requestFiltering>