Sht*_*ong 7 asp.net-mvc asp.net-mvc-5 asp.net-identity-2 asp.net-mvc-5.2
我刚刚开始使用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>
Run Code Online (Sandbox Code Playgroud)
同样,这是使用未经修改的库存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))
}
});
Run Code Online (Sandbox Code Playgroud)
唯一可能破坏默认网站的是全局web.config/machine.config文件中的内容,尽管我通常会避免在我的开发框中弄乱它们.在不更新NuGet包的情况下启动模板并不能解决问题.ASP.NET Identity lib可能有问题,但我真的不知道它,我找不到与我的问题相关的任何相关信息.
问题:有谁知道问题是什么,或者至少解决这个问题的最佳方法是什么?
谢谢
Sht*_*ong 13
好吧,经过一夜安眠后,我最终发现了什么问题:问题出在IIS Express配置中,当我创建一个新项目时,由于某种原因没有重置,并且可能继承了之前项目的设置.它已禁用匿名身份验证并启用了Windows身份验证,这与模板创建的默认web.config不兼容,因为它已将身份验证模式设置为None.因此IIS在服务任何资源之前都期望进行Windows身份验证,并且网站没有要求提供Windows凭据.而且我们有一个无限循环.
TL; DR如果遇到同样的问题,请检查项目属性(在解决方案资源管理器中选择项目,然后按F4).该Anonymous Authentication条目应设置为Enabled,并且Windows Authentication条目应设置为Disabled.请注意,仅当您未在模板设置中选择Windows身份验证时,此选项才有效!
| 归档时间: |
|
| 查看次数: |
5120 次 |
| 最近记录: |