我已经尝试了尽可能多的一切,但用户在很短的时间后仍然被注销。下面我包含了我的身份验证控制器和我的web.config。这大约是我的认证控制器的第30次迭代。我也尝试建立我自己的饼干无济于事。.NET Forms身份验证在超时之前注销用户
//Authentication Controller
public ActionResult Index(Login login)
{
if(true)//if (ModelState.IsValid)
{
using (InVisionTicketContext data = new InVisionTicketContext())
{
if (data.Logins.Count(l => l.Email == login.Email) >= 1)
{
var Login = data.Logins.Where(l => l.Deleted == false).SingleOrDefault(l => l.Email.ToLower() == login.Email.ToLower());
if(string.IsNullOrWhiteSpace(Login.Password))
{
ModelState.AddModelError("", "Invalid username or password.");
return View();
}
if (PasswordHash.ValidatePassword(login.Password, Login.Password))
{
FormsAuthentication.SetAuthCookie(Login.Email, true);
return RedirectToAction("Index", "Home");
}
}
}
}
ModelState.AddModelError("", "Invalid username or password.");
return View();
}
-
//Web.Config
<authentication mode="Forms">
<forms loginUrl="~/Authentication" timeout="28800" slidingExpiration="true" cookieless="UseCookies" name="InvTicketCookie"/>
</authentication>
<sessionState timeout="28800" >
</sessionState>
会有一个很好的方式来记录应用程序池重启,看看是否是这个问题?您是否听说过这是GoDaddy等服务的问题? – Preston
当然,您应该能够在Windows事件日志中看到它们,但是您也可以在Application_Start上以编程方式记录它们。同样值得注意的是,您拥有多个Web服务器,您需要一个静态机器密钥,否则您会得到类似的行为,因为来自用户的请求由Web服务器提供,而不是创建其身份验证凭据的服务器。 – Xander
至于GoDaddy,如果你有一个共享的网络托管计划,我不会感到惊讶,但是,这是由于共同的网络托管的性质,而不是专门的GoDaddy。 – Xander