我刚刚开始使用ASP.NET MVC 5(我已经使用了以前的版本)并且我有一个非常奇怪的问题:我使用Visual Studio 2013(完全更新的)ASP.NET模板创建了一个新网站。对于模板选项,我选择了MVC模板,“个人用户帐户”身份验证类型,没有云托管,除了核心MVC库之外没有其他组件。验证选项后,我更新了所有NuGet包。然后我按下F5(不打开或修改任何新的项目文件)。
由于无限重定向循环,浏览器仅会显示错误页面:URL显示:
http://localhost:24585/Account/Login?ReturnUrl=%2FAccount%2FLogin%3FReturnUrl%3D%252FAccount%252FLogin%253FReturnUrl%253D%25252FAccount%25252FLogin%25253FReturnUrl%25253D%2525252FAccount%252525<snip>
同样,这是使用未修改的库存MVC模板。我确实检查了登录URL是否在cookie auth选项中定义,看起来很好:
// Configure the sign in cookie
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
唯一可能破坏默认网站的是全局web.config / machine.config文件中的内容,尽管我通常会避免在我的开发框中弄乱它们。在不更新NuGet包的情况下启动模板并不能解决问题。 ASP.NET Identity lib可能有问题,但我真的不知道,我找不到与我的问题相关的任何相关信息。
问题:有谁知道问题是什么,或者至少解决这个问题的最佳方法是什么?
由于
答案 0 :(得分:13)
好吧,经过一夜安眠后,我最终发现了什么问题:问题出在IIS Express配置中,当我创建一个新项目时,由于某种原因没有重置,并且可能继承了之前项目的设置。它已禁用匿名身份验证并启用了Windows身份验证,这与模板创建的默认web.config不兼容,因为它的身份验证模式设置为None
。因此IIS在服务任何资源之前都期望进行Windows身份验证,并且网站没有要求提供Windows凭据。而且我们有一个无限循环。
TL; DR如果您遇到同样的问题,请检查项目属性(在解决方案资源管理器中选择项目,然后按F4)。 Anonymous Authentication
条目应设置为Enabled
,Windows Authentication
条目应设置为Disabled
。请注意,仅当您未在模板设置中选择Windows身份验证时,此选项才有效!