Я создал новое приложение MVC3, и оно размещено на базовом плане WinHost.
Суть проблемы в том, что достигнуты пределы памяти пула приложений, и каждый сеанс InProc стирается, что означает, что мои пользователи выходят из системы.
Согласно их документации, я вижу это:
http://support.winhost.com/KB/a626/how-to-enable-aspnet-sql-server-session-on-your-web.aspx
Вот содержимое моего файла web.config после выполнения шагов, описанных выше:
Здесь кроется проблема:
Мои пользователи все еще регистрируются через некоторое время. Я думал, что использование SQL для сеанса предотвратит эту проблему.
Вот соответствующий фрагмент кода о том, как я вхожу в систему своих пользователей:
[HttpPost]
public ActionResult Login(LogOnModel model)
{
using (EfAccountRepository accountRepository = new EfAccountRepository())
{
if (accountRepository.ValidateCredentials(model.Email, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Email, true);
return RedirectToAction("Index", "Home");
}
}
ModelState.AddModelError("", "Your email or password is incorrect.");
return View(model);
}
А вот код, который я использую, чтобы увидеть, вошел ли пользователь в систему:
public static MvcHtmlString AdminDashboardLink()
{
if (SecurityHelpers.UserIsPartOfCompany(HttpContext.Current))
{
string html = "ADMIN DASHBOARD ";
return new MvcHtmlString(html);
}
else
{
return new MvcHtmlString("");
}
}
public static bool UserIsPartOfCompany(HttpContext context)
{
if (!context.Request.IsAuthenticated)
return false;
using (EfAccountRepository accountRepository = new EfAccountRepository())
{
var loggedInUser = accountRepository.FindByEmail(context.User.Identity.Name);
string[] userRoles = accountRepository.GetRolesForUser(loggedInUser.AccountId);
return userRoles.Contains("Editor") || userRoles.Contains("Finance") || userRoles.Contains("Administrator");
}
}
Есть предложения? Возможно, мой web.config испорчен, и это вызывает проблемы. Может быть, мне тоже нужно было что-то удалить после того, как я добавил информацию о сеансе?