Вошедшие в систему пользователи выходят из системы через некоторое время.

Я создал новое приложение 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 испорчен, и это вызывает проблемы. Может быть, мне тоже нужно было что-то удалить после того, как я добавил информацию о сеансе?

    6
    задан Only Bolivian Here 16 March 2012 в 00:54
    поделиться