Вот последовательность, в которой происходят события, когда главная страница объединяется со страницей содержимого:
http://msdn.microsoft.com/en-us/library/dct97kc3.aspx
Итак, моя проблема:
У меня есть одна страница входа (не используется главная страница), одна главная страница и сотни страниц содержимого.
Я проверяю сеанс входа Session["loggedInUser"]
на главной странице (если не вошел в систему, перенаправить на страницу входа)
Итак, когда я не вхожу в систему, если я набираю адрес одной страницы контента, он должен проверить сеанс входа в систему на главной странице и перенаправить на страницу входа, верно? Но здесь есть два случая:
Если на странице содержимого я не использую ничего, связанного с Session["loggedInUser"]
, он будет перенаправлен на страницу входа, поэтому здесь все в порядке!
Второй случай: если я использую Session["loggedInUser"]
для отображения имени пользователя на странице содержимого, например:
UserInfo loggedInUser = (UserInfo)Session["loggedInUser"];
здесь будет возвращаться нулевой объект, , потому что page_load
на странице содержимого запускается до page_load
на главной странице , поэтому вместо перенаправления на страницу входа в систему он теряет нулевой объект.
Я также пытался Page_PreInit
на главной странице, но без помощи
protected void Page_PreInit(object sender, EventArgs e)
{
if (Session["loggedInUser"] == null)
{
Response.Redirect("~/Login.aspx");
}
}
Есть предложения?