asp.net-mvc – ASP.NET MVC 5:使用站点模板无限重定向到登录页面

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC 5:使用站点模板无限重定向到登录页面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始使用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可能有问题,但我真的不知道它,我找不到与我的问题相关的任何相关信息.

问题:有谁知道问题是什么,或者至少解决这个问题的最佳方法是什么?

谢谢

解决方法

好吧,经过一夜安眠后,我最终发现了什么问题:问题出在IIS Express配置中,当我创建一个新项目时,由于某种原因没有重置,并且可能继承了之前项目的设置.它已禁用匿名身份验证并启用了Windows身份验证,这与模板创建的默认web.config不兼容,因为它将身份验证模式设置为无.所以IIS在服务任何资源之前都期望进行Windows身份验证,并且网站没有要求提供Windows凭据.而且我们有一个无限循环.

TL; DR如果遇到相同问题,请检查项目属性(在解决方案资源管理器中选择项目,然后按F4).匿名身份验证条目应设置为“已启用”,Windows身份验证条目应设置为“已禁用”.请注意,仅当您未在模板设置中选择Windows身份验证时,此选项才有效!

猜你在找的asp.Net相关文章