2015-04-28 56 views
0

我的web.config我已成立10薄荷超時餅乾每次會議結束後到期

<sessionState mode="InProc" timeout="10" /> 

我的過濾器如下

public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     HttpSessionStateBase session = filterContext.HttpContext.Session; 

     HttpCookie userInfoCookie = 
      HttpContext.Current.Response.Cookies[System.Configuration.ConfigurationManager.AppSettings[Convert.ToString(CookieField.cookieName)]]; 
     string userExpire = string.Empty; 
     userExpire = new UserControllerHelper().FetchDataFromCookie(CookieField.UserRoleId.ToString()); 
     if (userExpire == null) 
     { 
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "Area", "" } }); 
     } 
    } 

和我所有的方法都具有過濾器[SessionExpire] 它對一個會話正常工作,但對於下一次點擊相同的操作方法cookie會自動清除。

在Global.asax中,我有以下代碼

void Session_Start(object sender, EventArgs e) 
{ 
    Session.Timeout = 10;    
} 

void Session_End(object sender, EventArgs e) 
{ 
} 

我嘗試了不同的暫停時間,但仍然沒有運氣。

我保存的cookies用下面的代碼

//create a cookie 
     string cookieName = System.Configuration.ConfigurationManager.AppSettings[Convert.ToString(CookieField.cookieName)]; 
     HttpCookie userCookie = new HttpCookie(cookieName); 
     //Add key-values in the cookie 
     userCookie.Values.Add(Convert.ToString(CookieField.UserId), EncryptData(Convert.ToString(userRegistrationModel.Id))); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserFirstName), EncryptData(Convert.ToString(userRegistrationModel.FirstName))); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserLastName), EncryptData(Convert.ToString(userRegistrationModel.LastName))); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserLogin), EncryptData(Convert.ToString(userRegistrationModel.Login))); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserPassword), Convert.ToString(userRegistrationModel.LoginPassword)); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserRoleId), EncryptData(Convert.ToString(userRegistrationModel.RoleId))); 
     userCookie.Values.Add(Convert.ToString(CookieField.UserConfirmed), Convert.ToString(userRegistrationModel.IsConfirmedByAdmin)); 
     //set cookie expiry date-time, if required. 
     userCookie.Expires = DateTime.Now.AddMinutes(10); 
     //writing the cookie to client. 
     HttpContext.Current.Response.Cookies.Add(userCookie); 

但經過了片刻「期滿」自動轉向0 是否有節約到期日的時間在這個代碼中的任何錯誤?

回答

0

我更新了過濾器,它解決了:)

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    HttpSessionStateBase session = filterContext.HttpContext.Session; 
    string userExpire = string.Empty; 
    userExpire = new UserControllerHelper().FetchDataFromCookie(CookieField.UserRoleId.ToString()); 
    if (userExpire == null) 
    { 
     filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" }, { "Area", "" } }); 
    } 
}