Привет Я пытаюсь разработать функциональность, которая будет отслеживать каждый раз есть новый сеанс создан в веб-приложение ака входа пользователя в систему.Tracking начало новой сессии в C#
Я создал класс под названием "StateBag.cs"
using System;
using System.Text;
[Serializable()]
public class StateBag
{
#region Business Methods
// To catch the event of a New Session //
private bool _NewSession = false;
public bool NewSession
{
get { return _NewSession; }
set { _NewSession = value; }
}
#endregion
}
на странице входа в систему, просто перед входом: -
// Declaration Region. //
private StateBag _Bag;
if (Session.IsNewSession)
{
_Bag = new StateBag();
_Bag.NewSession = true;
// ViewState["StateBag"] = _Bag;
Session["NewSession"] = _Bag;
}
на главной странице, после успешного входа в систему: -
// Declaration region. //
StateBag _Bag
{
get
{
return (StateBag)Session["NewSession"];
}
}
if (_Bag.NewSession == true)
{
// Do my stuff........ //
_Bag.NewSession = false; // set new Session back to false//
}
Я м возникли проблемы при получении _Bag ... он возвращается как Null ...
поэтому сообщение об ошибке: - «Ссылка на объект не указывает на экземпляр объекта.»
Может ли кто-нибудь помочь мне восстановить свойство NewSession, которое я установил на странице «Истина»?
Вместо развертывания собственного решения используйте событие 'Session_Start' в global.asax – Habib
Могу ли я использовать Session_Start за пределами global.asax ?? Поскольку мне нужно иметь возможность выполнять функциональные возможности на основе информации о пользователе, например, имя пользователя, имя, идентификатор и т. Д. ... эти данные, насколько мне известно, недоступны из global.asax ... следовательно, моя попытка создать собственную решение. – Philo
@Philo: вы можете начать отслеживать сеанс в 'global.asax', а затем * обновлять * этот пользовательский объект, чтобы включать сведения о пользователе, когда они становятся доступными. – David