HTTP 错误 404.15 - 未找到 ...因为查询字符串太长

HTTP Error 404.15 - Not Found ...because the query string is too long

我检查了很多关于此错误的帖子,但仍无法解决问题。

我在 Windows 8 pro 上用 VS2013 运行 构建了简单的 MVC5 网站。创建站点时,选择了个人帐户选项。我现在需要启用 windows 身份验证,以便只有 AD 帐户用户可以使用该网站和授权,以便我可以将对某些视图/控制器的访问限制为特定的 AD 组。

在 VS 中选择 Web 项目后,我更新了属性 window (F4),以便匿名身份验证设置为禁用,Windows 身份验证设置为启用。

项目的 web.config 现在包含以下部分:

<system.web>
    <authentication mode="Windows" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
    <authorization>
      <deny users="?" />
    </authorization>
  </system.web>
  <system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
  </system.webServer>

我从 IIS 或 F5 访问网站时出现错误:HTTP 错误 404.15 - 未找到 请求过滤模块用于拒绝查询字符串过长的请求。我注意到有些东西已经循环以提供 ReturnUrl,它是查询字符串中重复的长连接。

在 IIS\Authentication 部分,我已设置为禁用 "Anonymous Authentication, ASP.Net Impersonisation, and Forms Authentication"。在 IIS.Net 授权规则部分,我设置为拒绝 "Anonymous Users" 和允许 "All Users"

我哪里错了?

我唯一一次亲自 运行 解决这个问题是在我不小心将 [Authorize] 添加到布局中使用的子操作时。添加 [Authorize] 到您的登录操作会产生相同的效果,或者只是忽略在您的登录操作中添加 [AllowAnonymous],当它所在的控制器上有 [Authorize] 时。总而言之,这是由需要在实际登录页面上进行授权的某些事情引起的,这会导致您被重定向到需要授权的登录页面,从而导致您被重定向到登录页面,等等

tl;博士

  1. 确保您的登录/登录操作没有 [Authorize].
  2. 确保您的登录/登录操作[AllowAnonymous].
  3. 确保您的布局或登录页面中使用的子操作没有 [Authorize][AllowAnonymous](如果它们位于装饰有 [Authorize] 的控制器中)。

您可能在启动时有一个将您重定向到登录页面的功能。您必须禁用它。

我通过默认身份验证方法创建了项目,该方法创建了一个帐户控制器及其依赖项。当我将身份验证方法更改为 Windows 时,出现了上述错误。

我所做的是在 Startup.cs 文件中注释掉 ConfigureAuth(app) 函数来解决问题。

我在启用 Windows 身份验证时遇到此错误。我想根据 Windows 登录授权用户,我不想在我的应用程序中使用登录页面。

我通过在我的 Web 配置文件中添加以下内容来修复错误。

  1. 在标签 system.web 下,将身份验证 mode="None" 更改为身份验证 mode="Windows"

  2. 标签appSettings下,添加add key="owin:AutomaticAppStartup" value="false"

我遇到了同样的问题..

在项目属性下检查..

Anonymous Authentication=False
Windwos Authentication=True

我们 运行 遇到了类似的问题,我们的授权过滤器已正确实施。我把它留在这里以防其他人遇到与 IIS 10 相同的问题。

在与 Microsoft 支持人员合作后,我们确定未在服务器级别启用 .Net 授权规则。