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 中尝试添加到 <appSettings>
中的 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 错误
使用应用程序池标识在 IIS 上的 ASP.NET 中查询 Win32_Printer 时权限被拒绝
asp.net mvc3发布(部署)问题。vs2012发布项目缺少文件夹、发布后部署在iis7上网站无法运行