使用更新面板時,我在刷新服務器會話時出現問題。我有三個按鈕,觸發器。使用Ajax UpdatePanel時刷新服務器端會話
<asp:UpdatePanel ID="TrackingUpdatePaenl" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnPopulate" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnGo" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnTopUpdate" EventName="Click" />
</Triggers>
<ContentTemplate>
//GridView that is updated by the triggers
</ContentTemplate>
</asp:UpdatePanel>
我遇到的問題是ServerState會話不會在異步回發後自行刷新。在我的webconfig中,我有會話狀態和表單驗證全部設置爲60分鐘超時。所發生的事情是,即使頁面處於活動狀態,頁面也會在60分鐘後由於不活動而超時。我使用這個JavaScript重定向用戶一旦他們的服務器端的會話超時......
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// Handle the session timeout
string sessionExpiredUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/DealLog/Account/SessionExpiredRedirect.aspx";
StringBuilder script = new StringBuilder();
script.Append("function expireSession(){ \n");
script.Append(string.Format(" window.location = '{0}';\n", sessionExpiredUrl));
script.Append("} \n");
script.Append(string.Format("setTimeout('expireSession()', {0}); \n", this.Session.Timeout * 60000)); // Convert minutes to milliseconds
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "expirescript", script.ToString(), true);
}
上面的代碼是在我的網站主的頁面加載。這在沒有使用更新面板時效果很好。
用戶抱怨說,即使他們正在使用該頁面,它也會在60分鐘後超時。我在解決這個問題的印象是使用JavaScript來更新會話。我在互聯網上找到的所有東西都使用javascript來做到這一點,但是他們通過定時器調用服務器,即使頁面處於非活動狀態,頁面也會保持活動狀態。這不是我需要的解決方案。如何在點擊這些按鈕時刷新服務器會話?一旦用戶點擊按鈕,調用JavaScript調用另一個aspx頁面來保持會話活着?
我曾嘗試聯繫here和here,但我曾與其中任一沒有運氣。任何幫助是極大的讚賞。
是的,對不起,我忘了提及這一點。我正在使用Windows Server 2008.我已經檢查過該設置,並將其設置爲默認設置,如上所示。對於臨時修復,我刪除了更新面板和觸發器,但尚未正確執行。謝謝你的想法。 – Humpy