下面是當一個母版頁合併內容頁中發生的事件序列:在主Page_Load事件和內容頁
http://msdn.microsoft.com/en-us/library/dct97kc3.aspx
所以,我的問題是:
我有一個登錄頁面(不使用母版頁),一個母版頁和數百個內容頁面。
我爲您在母版頁登錄會話Session["loggedInUser"]
(如果不登錄,重定向到登錄頁面)
所以,當我不登錄,如果我輸入一個內容頁面的地址,它必須檢查在主頁面登錄會話並重定向到登錄頁面,對不對?但這裏有兩種情況:
如果在內容頁,我不使用相關Session["loggedInUser"]
任何東西,它會重定向到登錄頁面,因此,它是確定在這裏!
第二種情況:如果我使用Session["loggedInUser"]
在內容頁中顯示用戶名,例如:
UserInfo loggedInUser = (UserInfo)Session["loggedInUser"];
,將在此返回null對象,因爲在內容頁中page_load
在母版頁page_load
之前解僱,所以它會使用空對象而不是重定向到登錄頁面。
我也試過在母版頁Page_PreInit
但沒有幫助
protected void Page_PreInit(object sender, EventArgs e)
{
if (Session["loggedInUser"] == null)
{
Response.Redirect("~/Login.aspx");
}
}
什麼建議嗎?
您是否也可以在上面的Page_PreInit方法期間拋出的異常發佈堆棧跟蹤? – Jaymz 2011-05-09 10:09:09
我不會發布它,因爲這是無稽之談。它只是像'System.NullReferenceException:對象引用沒有設置爲對象的實例那樣'的一些東西。並指向內容頁面中的代碼,我得到'loggedInUser'對象 – 2011-05-09 10:19:07
這是一個非常奇怪的問題。會話[「loggedInUser」]是否只在重定向或服務器重定向之前被設置在登錄頁面中。傳輸回主頁面下的內容頁面? (根本不在主頁面邏輯中)PS - 我通常在Master.Page_Init()中檢查身份驗證... – 2013-07-25 20:55:34