Я установил стандартное приложение ASP.NET Webforms на своем ПК. На страницах входа хранится 3 переменные сеанса; имя пользователя, пароль и перенаправление.Переменные сеанса не распространяются
Из того, что я видел, я могу использовать Session["user"] = username
или Session.Add("user", username);
для установки переменных.
Как только переменные были установлены, я перенаправляюсь на другую страницу, которая выполняет некоторые дополнительные проверки подлинности.
В приемной странице, я следующий
protected void Page_Load(object s, EventArgs e)
{
if (!IsPostBack)
{
var user = (string)(Session["user"]);
}
}
Когда я пришел, чтобы посмотреть на пользователя, хотя, это нуль.
Все, что у меня установлено, это значения из коробки.
Дополнительная информация
В моей вызывающему, сессия устанавливается как этот
if (user.UserName == "admin")
{
Session.Add("user", UserName.Text);
Session.Add("pass", Password.Text);
Session.Add("redir", Request.QueryString["ReturnUrl"]);
Response.Redirect("SecondPage.aspx", false);
}
В моей SecondPage.aspx
if (!IsPostBack)
{
ReturnUrl = (string)(Session["redir"]);
Username = (string)(Session["user"]);
Password = (string)(Session["pass"]);
}
(ReturnUrl, Имя пользователя и пароль только просто прибудете; установленные свойства)
** Дополнительный
Чтобы убедиться, что я не теряю свой мрамор, я выполнил еще два теста.
Сначала я добавил к Page_Load для первой страницы следующего
Session["fish"]="chips";
Затем я прочитал, что еще в течение Page2 и «фишек» шоу.
Далее я создал статический класс и присвоил свойствам класса и попытался прочитать, что внутри. - все они были пустыми, несмотря на то, что они были установлены (и протестированы) перед перенаправлением на страницу2.
Это меня озадачило!
Как вы определяете, что это null? Эта переменная 'user' существует только внутри этого оператора' if'. Если вы посмотрите на переменную 'user' в другом месте, это другая переменная. – Guffa
Я не могу воспроизвести это. Можете ли вы представить более полный пример, демонстрирующий проблему? Я подозреваю, что ошибка в другом месте. – David
@Guffa - я тестирую переменную в if (Console.WriteLine (пользователь);) – Nodoid