[英]How does the baseclass call the Session_End method from Global.asax?
我想在用戶會話期滿后將其重定向到登錄頁面。 我創建了一個基礎頁面,該基礎頁面將由文件后面的每個aspx代碼繼承。
我真正想知道的是,一旦會話超時調用了Session_End()方法,您如何才能將basepage方法設置為自動執行重定向?
我已經在Google上搜索了一個多小時,以尋求解決方案,但是仍然很短。
我以前從未使用過global.asax頁面,這是我第一次創建基礎頁面,因此任何建議或解釋都將非常感謝
我認為這是不可能的,因為當Session_End被觸發時,用戶長時間處於不活動狀態,並且可能已經關閉了連接。
您需要做的是在所有頁面中運行某種javascript計時器,該計時器將在用戶過期后將其重定向。
親切的問候,
埃德溫。
您的問題: how can you set the basepage method to automatically perform the redirect once the Session_End() method has been called on session timeout
您可以從global.asax文件中調用基本頁面方法。 您將在Session_End()中調用此方法[在會話過期或結束時調用]。 在此basePage方法中,放入用於重定向的自定義邏輯。
但是,您應該同意,如果需要從外部調用PAGE方法,那么在一定程度上肯定是不好的設計。
Base.aspx:
public class BasePage : Page
{
public static void MyMethod()
{
...
}
}
Global.asax中
void Session_End(object sender, EventArgs e)
{
BasePage.MyMethod();
}
請參閱此帖子以獲取更多詳細信息: http : //forums.asp.net/t/1426012.aspx/1
好吧,身份驗證基於Cookie(至少是表單身份驗證,對於基於Windows的身份我不確定)。 當您收到沒有關聯會話的經過身份驗證的請求時,只需刪除此cookie。 登錄后,您將創建會話。
您可以使用以下方式刪除auth cokie
FormsAuthentication.SignOut();
在我自己和一個工作同事之間,我們設法解決了這個問題。
解決方法如下:
在我的應用程序中,我使用了一個會話變量來存儲用戶名。
一旦會話超時,則當然會從內存中清除用戶名會話變量。 這是我迫使應用程序返回索引頁面所需的觸發器。
解
第一步:
//在基類中輸入以下代碼
protected override void OnLoad(EventArgs e)
{
if (Session["username"] == null)
{
Response.Redirect("~/SessionTimeout.aspx");
}
base.OnLoad(e);
}
第二步:
對於文件后面的每個aspx代碼(即Web表單的aspx.cs文件),而不是從默認頁面(System.web.UI.Page)繼承,都從基頁繼承:
public partial class SessionTimeout : BasePage
{
}
最后一步:
設置sessionState屬性
<sessionState mode="InProc" cookieless="false" timeout="30"/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.