2017-03-09 52 views
0

我正在運行ASP.NET 4.0應用程序並使用plesk控制面板發佈它。我做了以下操作。在web.config文件刷新時在asp.net mvc中的會話超時

1.I設置會話超時爲:

<sessionState timeout="20000"/> 
  • 我處理會話變量在登錄控制器是這樣的:
  • Session["userId"] = lUser.userId; Session["role"] = lUser.userType;

    進入其他控制器,代碼如下:

    if (Session["role"] == null) 
    { 
        return RedirectToAction("Index", "Login"); 
    } 
    else if (Session["role"].ToString() == "Admin" || Session["role"].ToString() == "Super Admin") 
    { 
        return View(); 
    } 
    

    這段代碼在我的本地服務器上沒問題,但是當使用plesk控制面板發佈到真實服務器時,它也可以第一次使用。但是當我第二次點擊相同的菜單時,它會重定向到登錄頁面。

    +0

    你可以是InProc模式,即'嘗試<的sessionState模式=「InProc方式」超時=「20000」無Cookie =「假」 />' –

    +0

    我會用個破發點,並逐步完成,看看你的會話變量是什麼和重定向發生的地方。 – DaniDev

    +0

    @DaniDev你不能使用斷點和調試,因爲真正的服務器上發生問題 – Alamgir

    回答

    0

    相反SessionState的模式= 「InProc方式」 使用SessionState的模式= 「StateServer的」,但你需要確保服務器在那裏你重新啓動應用程序後,StateServer處於活動狀態。

    <sessionState mode="StateServer" timeout="20000" cookieless="false" /> 
    
    0

    嘗試增加:

    protected void Session_Start(Object sender, EventArgs e) 
    { 
        Session["init"] = 0; 
    } 
    

    到Global.asax中

    +0

    我已經試過這段代碼,但現在它第一次重定向 – Alamgir