C# Asp.Net Web表单角色身份验证在发布网站几分钟后停止工作
我有一个Asp Web窗体网站,它在2.2.1版中使用Microsoft.AspNet.Identity.Owin来管理用户和角色。default.aspx页面仅允许角色“实验室、管理员、实验室主管”。当用户通过login.aspx页面登录时,如果用户的角色是允许的3个角色之一,则会重定向到default.aspx页面。这就是问题所在…在我发布网站后,这个角色身份验证可以工作5到10分钟。之后,即使用户的角色正确,用户也无法再登录。在它停止工作后,用户尝试登录,页面停留在登录页面上,从不重定向到默认页面。如果我想让身份验证再次工作,我通常可以重新发布web.config页面,身份验证将再工作几分钟。我被难住了 因此,我的最新理论是,我的web.config文件正在变得损坏。我发现,如果我删除web.config文件并重新发布它,该网站将工作一段时间,然后再次停止工作。这是我的代码,允许我提到的3个角色,并拒绝所有其他用户 my web.config文件中的代码段:C# Asp.Net Web表单角色身份验证在发布网站几分钟后停止工作,c#,asp.net,webforms,C#,Asp.net,Webforms,我有一个Asp Web窗体网站,它在2.2.1版中使用Microsoft.AspNet.Identity.Owin来管理用户和角色。default.aspx页面仅允许角色“实验室、管理员、实验室主管”。当用户通过login.aspx页面登录时,如果用户的角色是允许的3个角色之一,则会重定向到default.aspx页面。这就是问题所在…在我发布网站后,这个角色身份验证可以工作5到10分钟。之后,即使用户的角色正确,用户也无法再登录。在它停止工作后,用户尝试登录,页面停留在登录页面上,从不重定向到
<configuration>
<location path="default.aspx">
<system.web>
<authorization>
<allow roles="Lab, Admin, LabSupervisor"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
我希望我能解释原因,但这似乎已经解决了问题。请发布相关代码。
protected void LogIn(object sender, EventArgs e)
{
if (IsValid)
{
// Validate the user password
var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>();
var signinManager = Context.GetOwinContext().GetUserManager<ApplicationSignInManager>();
// This doen't count login failures towards account lockout
// To enable password failures to trigger lockout, change to shouldLockout: true
var result = signinManager.PasswordSignIn(UserName.Text, Password.Text, RememberMe.Checked, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
break;
case SignInStatus.LockedOut:
Response.Redirect("/Account/Lockout");
break;
case SignInStatus.RequiresVerification:
Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}",
Request.QueryString["ReturnUrl"],
RememberMe.Checked),
true);
break;
case SignInStatus.Failure:
default:
FailureText.Text = "Invalid login attempt";
ErrorMessage.Visible = true;
break;
}
}
}
Session["DummySession"] = "DummySession";