我已经检查了很多关于此错误的帖子,但还无法解决问题。
我在 VS2013 中构建了简单的 MVC5 网站,在 Windows 8 pro 上运行。创建网站时,选择了个人帐户选项。我现在需要启用 Windows 身份验证,以便只有 AD 帐户用户可以使用该网站,还需要启用授权,以便我可以限制特定 AD 组对某些视图/控制器的访问。
在 VS 中选择 Web 项目后,我更新了属性窗口 (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 部分中,我已设置为禁用“匿名身份验证、ASP.Net 模拟和表单身份验证”。在 IIS.Net 授权规则部分中,我设置为拒绝“匿名用户”并允许“所有用户”
我哪里出错了?
我个人遇到此问题的唯一一次是当我不小心将
[Authorize]
添加到布局中使用的子操作时。当控制器所在的控制器上有 [Authorize]
时,在登录操作中添加 [AllowAnonymous]
会产生相同的效果,或者只是忽略在登录操作中添加 [Authorize]
。总而言之,这是由于实际登录页面上需要授权的某些内容导致您被重定向到需要授权的登录页面,导致您被重定向到登录页面等。
tl;博士
[Authorize]
。[AllowAnonymous]
。[Authorize]
,或者如果它们位于用 [AllowAnonymous]
装饰的控制器中,则没有 [Authorize]
。我在启用 Windows 身份验证时收到此错误。我想根据 Windows 登录授权用户,但我不希望在我的应用程序中出现登录页面。
我通过在 Web 配置文件中添加以下内容修复了错误。
在标签
system.web
下,将身份验证mode="None"
更改为身份验证mode="Windows"
在标签
appSettings
下,添加添加key="owin:AutomaticAppStartup" value="false"
您可能在启动时有一个功能可以将您重定向到登录页面。您必须禁用它。
我通过默认身份验证方法创建了项目,该方法创建了帐户控制器及其依赖项。当我将身份验证方法更改为 Windows 时,出现了上述错误。
我所做的是注释掉 Startup.cs 文件中的
ConfigureAuth(app)
函数来解决该问题。
我也遇到同样的问题..
检查项目属性..
Anonymous Authentication=False
Windwos Authentication=True
我必须将 IUSR 添加到默认网站指向的文件夹中。