IIS 上的 ASP.NET MVC3 和 Windows Auth 不断重定向到 /Account/Login

Posted

技术标签:

【中文标题】IIS 上的 ASP.NET MVC3 和 Windows Auth 不断重定向到 /Account/Login【英文标题】:ASP.NET MVC3 and Windows Auth on IIS keeps redirecting to /Account/Login 【发布时间】:2011-06-27 22:19:49 【问题描述】:

我正在运行 MVC3 和 Windows 身份验证 Web 应用程序。当我部署到 IIS6 时,它运行良好,直到我遇到需要身份验证的页面。然后,当我在我的应用程序中没有任何痕迹并且我的 web.config 配置为 windows auth 时,它会自动重定向到 /Account/Login。

有什么想法吗?

这是我的整个 web.config 文件:http://pastie.org/1568510

【问题讨论】:

你能显示你的 web.config 吗? 在上面发布了 web.config。 您能在 Global.asax.cs 文件中显示您的路线吗? 这个问题解决了吗?我有同样的问题。 与 MVC5 有同样的问题,并通过在 IIS 中启用匿名身份验证来解决。问题是匿名用户没有“经过身份验证”,因此当尝试访问登录表单系统时说“您尚未登录,请登录!”但是登录表单本身受到保护并导致循环行为(直到浏览器/服务器放弃)。我没有在 IIS 中使用 Windows 身份验证(由于某种原因它显示在 Web.config 中) 【参考方案1】:

在 4.6 框架的 MVC 中,这是通过两种方式完成的,第一种是在 Web.Config 中,如您所料,第二种是在项目文件中完成,用于配置 IIS Express:

<PropertyGroup>
..
    <IISExpressAnonymousAuthentication>enabled</IISExpressAnonymousAuthentication>
    <IISExpressWindowsAuthentication>disabled</IISExpressWindowsAuthentication>
</Property

在开发时将禁用 Windows 身份验证并使用匿名,但不用于部署应用程序。

【讨论】:

【参考方案2】:

确保 IIS 中的所有身份验证设置都是正确的。

对我来说,重定向到 /Account/Login 的应用程序在启用匿名身份验证的站点内运行。在站点中禁用此功能并为应用程序启用它(连同 Windows 身份验证)后,一切正常。

【讨论】:

【参考方案3】:

我知道这是一个超级老帖子。但是我在经历了从 MVC 4 升级到 MVC 5 的tutorial 之后遇到了这个问题。所以我把它扔了,以防万一其他人犯了我犯的错误。 我的问题最终是我在升级我的参考资料时不小心将“Microsoft.AspNet.WebPages.WebData”添加到我的项目中。

运行“Uninstall-Package Microsoft.AspNet.WebPages.WebData”将我的身份验证恢复到以前的荣耀。

【讨论】:

【参考方案4】:

我是这样解决的 1) 转到 IIS 2) 选择您的项目 3) 单击“身份验证”4) 单击“匿名身​​份验证”> 编辑 > 选择“应用程序池标识”而不是“特定用户”。 5) 完成。

【讨论】:

【参考方案5】:

您还可以转到服务器上的 IIS 并进入身份验证模式并禁用表单身份验证。

这让我在演示中摸不着头脑。尴尬。

【讨论】:

【参考方案6】:

我在 MVC4 项目中遇到了同样的问题,只有我的项目完全禁用了匿名身份验证,因此始终需要 Windows 身份验证。

我的 bin 文件夹中没有 WebMatrix.*,将 autoFormsAuthentication 和 enableSimpleMembership 键添加到 appSettings 对我没有帮助。

相反,我不得不注释掉以下内容:

<authentication mode="Forms">
    <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

并将其替换为:

<authentication mode="Windows" />

成功了。

【讨论】:

【参考方案7】:

另一种覆盖“MVC + IIS 7 的 login.aspx url 重定向问题”的方法...通过将其添加到您的 appSettings (web.config):

<authentication mode="Forms">
<!--<forms loginUrl="~/Account/Login" timeout="2880" />-->
<forms loginUrl="~/Home" timeout="2880" />
</authentication>

...这为我解决了问题

【讨论】:

【参考方案8】:

我使用的是 nopCommerce 2.65 并遇到了这个问题。

我没有在 bin 文件夹中部署任何 WebMatrix.Data.dll 或 WebMatrix.WebData.dll,但添加

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false" />

在 web.config 中解决了。

【讨论】:

【参考方案9】:

尝试通过将其添加到您的 appSettings (web.config) 来覆盖 WebMatrix.dll 默认登录网址:

<add key="loginUrl" value="~/Account/LogOn"/>

WebMatrix.dll 将登录 URL 设置为 /Account/Login,如果配置文件中未设置此键... 它对我有用。

【讨论】:

这确实是 MVC 4 的正确答案,因为默认角色提供者通常需要 webmatrix,因此不能只是关闭或删除(正如大多数答案所暗示的那样)。这只是使它使用正确的控制器/命令进行登录。【参考方案10】:

在 RTM 中尝试添加到 Web.config 中:

<add key="enableSimpleMembership" value="false" />

上面的帖子有效。 +1 在添加可部署依赖项之前添加此键。

【讨论】:

添加这个键/after/添加可部署的依赖项(这是我的场景)也可以。【参考方案11】:

在 RTM 中尝试添加到 &lt;appSettings&gt; 中的 Web.config:

<add key="enableSimpleMembership" value="false" />

(感谢Problem exclusively using Windows Authentication in ASP.NET MVC 3 Beta。)

【讨论】:

请注意:这也为您节省了新的 MVC4... 所以 2 年后 WebMatrix.* 仍然存在这个问题。 :( 这非常有效。我能够将它添加到发布配置中,而不会对部署过程做奇怪的事情。值得注意的是,我的 AccountController 有 [InitializeSimpleMembership] 标签。 非常感谢。这里的所有答案肯定帮助了一些高度恼火的开发者。 MVC5,还是有这个问题,这个解决方案帮了我。我必须在 MVC4->MVC5 升级期间添加 WebMatrix,所以这个问题已经浮出水面。 上述评论同上。这花了我一个小时才弄清楚。如果您从 MVC4 升级到 MVC5,则无法删除 WebMatrix,如最受支持的答案所示,因此在此答案中添加密钥对我有用。【参考方案12】:

不确定是否还有问题,但请尝试添加

<add key="autoFormsAuthentication" value="false" />

到 appSettings 下的 web.config。根据here 和here,应该可以解决您的问题。

【讨论】:

【参考方案13】:

检查您是否在应用程序的 bin 目录中部署了 WebMatrix.Data.dll 和/或 WebMatrix.WebData.dll。如果它们在那里(并且您知道自己不使用它们),请尝试删除它们并访问需要身份验证的页面。

【讨论】:

这为我解决了这个问题 - 我正在使用 FormsAuthentication 但我的登录页面是帐户/登录而不是帐户/登录。我相信这是您创建新的 MVC3 应用程序时的默认设置,当我选择 Add Deployable Dependencies 选项时,这些 WebMatrix.*.dll 是由 VS2010 添加的。当 VS 给你的默认设置有问题时,有点烦人! 我已将此作为 Microsoft Connect 上的错误添加,它浪费了我的时间! connect.microsoft.com/webmatrix/feedback/details/665150/… 接受的答案对我不起作用。不过,这个解决方案确实为我解决了这个问题。 谢谢。与@Duncan-Watts 一样,WebMatrix.* 程序集被添加到 _bin_deployableAssemblies 文件夹中,因此也被添加到 bin 文件夹中。请注意,我必须从两个文件夹中删除它们,执行 Clean 并没有像我假设的那样将它们从 bin 文件夹中删除。 为这个“错误”浪费了半天多的时间,虽然我很高兴终于找到了答案,但我仍然对此感到有些不安。 *&@#^$!!

以上是关于IIS 上的 ASP.NET MVC3 和 Windows Auth 不断重定向到 /Account/Login的主要内容,如果未能解决你的问题,请参考以下文章

IIS7.5 中的 ASP.NET MVC3 401.1 错误

Win10安装IIS并配置ASP.NET 4.0

使用应用程序池标识在 IIS 上的 ASP.NET 中查询 Win32_Printer 时权限被拒绝

asp.net mvc3发布(部署)问题。vs2012发布项目缺少文件夹、发布后部署在iis7上网站无法运行

Asp.net MVC3.0用Razor视图如何实现URL伪静态?真诚求教。

asp.net MVC3 上的自定义错误页面