Я хотел бы сохранить зарегистрированных пользователей в моем приложении asp.net в коллекции и сохранить эту коллекцию в состоянии приложения. У меня есть страница входа, и в событии загрузки страницы Default.aspx у меня есть следующий код: -
protected void Page_Load(object sender, EventArgs e)
{
users = (List<Users>)HttpContext.Current.Application["loggedUsers"];
if (User.Identity.IsAuthenticated == false)
{
Server.Transfer("Login.aspx");
}
if (User.Identity.Name != "")
{
users.Add(new Users { userName = User.Identity.Name.ToString() });
HttpContext.Current.Application["loggedUsers"] = users;
}
}
Однако при запуске приложения после входа в систему в коде, где я добавляю новые объекты в список, создается исключение ссылки на объект, не установленное на экземпляр объекта. Если я прокомментирую следующую строку:
users = (List<Users>)HttpContext.Current.Application["loggedUsers"];
Приложение будет работать соответственно, однако, если, скажем, у нас есть два пользователя, ПОЛЬЗОВАТЕЛЬ А и ПОЛЬЗОВАТЕЛЬ Б, и ПОЛЬЗОВАТЕЛЬ А входит в систему, он добавляется в список, однако, как только ПОЛЬЗОВАТЕЛЬ Б регистрируется, он перезаписывает ПОЛЬЗОВАТЕЛЯ А.
В моем веб-сервисе у меня есть следующий метод, который затем возвращает список зарегистрированных в настоящее время пользователей, который отлично работает.
[WebMethod(EnableSession = true)]
public List<Users> getLoggedInUsername()
{
return (List<Users>)Application["loggedUsers"];
}