ASP.NET проблема с сессией / перенаправление на страницу - PullRequest
2 голосов
/ 21 июня 2011

Привет, у меня проблема с именем пользователя магазина в сеансе.На странице входа я сохраняю имя пользователя для сессии.Пользователь вводит учетные данные на странице входа, а затем перенаправляется на страницу по умолчанию.Мне нужно в классе Доступ по умолчанию к хранилищу переменных в сеансе.

Logon.aspx

<script runat="server">
    void Login_Click(object sender, EventArgs e)
    {
                 Session["user"]  = tbUserName.Text;

                //You can redirect now.
                Response.Redirect(FormsAuthentication.GetRedirectUrl(tbUserName.Text, 
false));
}
</script>

secod Главная страница здесь:

Default.aspx-Default.aspx.cs

public partial class Default : Page, 
    IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{
      string userName = (string) (Session["user"]);
}

, но в результате имя пользователя пустое.

Веб-конфигурация здесь:

<sessionState cookieless="true" regenerateExpiredSessionId="true" />

Спасибо за совет.

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Если фрагмент находится на уровне модуля (на что ссылается Bala R в комментариях), возможно, состояние сеанса еще не установлено. Попробуйте получить его в методе, который является частью жизненного цикла страницы (например, page_load и т. Д.).

1 голос
/ 21 июня 2011

Почему бы не получить его напрямую из HttpContext HttpContext.Current.User.Identity.Name

Редактировать: Я думаю, вы пытаетесь получить его на уровне страницы, а не в page_load или другом месте Вот почему вы не получаете значение сеанса.

Я надеюсь, что ниже будет работать для вас

 protected void Page_Load(object sender, EventArgs e)
 {
     string userName = (string) (Session["user"]);
 }
0 голосов
/ 21 июня 2011

Обновление: это неверно.

Вы теряете сеанс (без файлов cookie) при перенаправлении. Сессии без файлов cookie сохраняются в URL-адресе и теряются при явном перенаправлении, поэтому в вашей сессии ничего не будет на второй странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...