在我的应用程序中,我使用了Asp.Net表单身份验证,
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
1,
adminResult.UserName,
DateTime.Now,
DateTime.Now.AddDays(2),
true,
"Administrator",
FormsAuthentication.FormsCookiePath
);
string hash = FormsAuthentication.Encrypt(ticket);
HttpCookie coockie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
if (ticket.IsPersistent)
{
coockie.Expires = ticket.Expiration;
}
Response.Cookies.Add(coockie);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Dashboard", "Cockpit");
}
但是它会在10到15秒内自动退出。
解决方案是什么?
由于
答案 0 :(得分:0)
可能是因为垃圾收集器清除并将机器密钥重新分配给您的应用程序。 Generate a machine key并将其放在web.config
中<system.web>
<machineKey validationKey="###YOUR KEY HERE ###"
decryptionKey="## decrypt key here ##"
validation="SHA1" decryption="AES" />
MachineKey用于ViewState加密和验证,FormAuthentication
使用此密钥签署身份验证票证,如果您未在web.config
中指定一个自动分配,但如果您自己指定它收藏家不会清除它......
HERE是一篇内容丰富的文章,它可以帮助您更好地理解MachineKey的重要性/工作