Я хочу зарегистрировать сессию пользователей на своем сайте. Я надеялся просто установить переменную сеанса. Но инициализация этого дает мне проблемы.Сессионная переменная и Masterpages
protected void Page_Load(object sender, EventArgs e)
{
if (Session["SESSION_GUID"] == null)
{
Session["SESSION_GUID"] = Guid.NewGuid().ToString();
Response.Redirect(Request.Url.ToString(), true);
return;
}
lnkUpload.Visible = (Session["LOGGED_IN"] != null);
btnLogout.Visible = (lnkUpload.Visible);
}
Кажется, что Masterpage создает переменную OK, но остальная часть нагрузки страниц (те, что с помощью главной страницы). Так что в моем журнале я вижу ДВЕ хиты. Один из них не имеет идентификатора сеанса, а второй хит имеет идентификатор сеанса.
Любая идея, почему дочерняя страница этой главной страницы загружается дважды? Это происходит только при первом запросе на сайт. После этого сессия работает нормально, и мы получаем только один удар.
Возможно, я не понимаю ваш вопрос, но разве вы не пытаетесь его загрузить дважды через перенаправление? При первом вызове страницы (т. Е. Идентификатор предварительной сессии) идентификатор сеанса устанавливается, и страница загружается снова. –
Код, который я показываю, находится на главной странице. Моя логика заключалась в том, что когда страница загружается, она сначала загружает главную страницу (?), А затем запрашивает фактическую страницу. На странице page_Load главной страницы я проверяю переменную сеанса. Если он не установлен, я устанавливаю его, останавливаю загрузку вызываемой страницы и обновляюсь до вызываемой страницы. Поэтому, если страница A использует главную страницу ... Я пытаюсь остановить загрузку страницы A по главной странице, установить переменную, а затем загрузить страницу A. Но страница A загружается дважды. Я знаю, что у меня есть обновление, но я думал, что обновление будет выполнено до загрузки страницы A. – Craig
Я не уверен, но я не думаю, что так работает IIS (или любой другой веб-сервер, если на то пошло). Когда страница запрашивается, она загружается. Вы можете очистить все, как только сможете, вызвав Response.ClearContent и/или Response.ClearHeaders, а затем вызвав Response.End, но у вас все еще будет запись в журнале, указывающая, что страница была запрошена дважды (потому что это было). –