не может присвоить значение в session-asp.net - PullRequest
0 голосов
/ 28 июля 2011

просто пытаюсь узнать asp.net, я могу войти и перенаправить на default.aspx.Я пытаюсь проверить, если имя пользователя и пароль пользователя правильно из базы данных (в состоянии сделать).теперь я пытаюсь сохранить имя пользователя в сеансе (не могу этого сделать, здесь я получаю нулевую указатель / ошибку значения) и показать это значение сеанса в качестве приветственного сообщения на следующей странице / перенаправленный код page.my выглядит так:*

здесь я получаю ссылку на объект, не установленную для экземпляра исключения объекта для Session ["user"]

любое предложение Спасибо!

Ответы [ 5 ]

5 голосов
/ 28 июля 2011

Потому что перед назначением значения сеансу вы перенаправляете на другую страницу.

Response.Redirect("default_Page.aspx");
//Response.Redirect("erp.htm");
Session["user"] = txt_uname.Text; // this is not executing...

Вы должны присвоить значение перед перенаправлением на страницу.например,

Session["user"] = txt_uname.Text; // this is not executing...
Response.Redirect("default_Page.aspx");
//Response.Redirect("erp.htm");
2 голосов
/ 28 июля 2011

Сохраните значение в своем сеансе до перенаправления:

Session["user"] = txt_uname.Text;
Response.Redirect("default_Page.aspx");

Таким образом, вы не потеряете значение txtuname.Text.

Кроме того, вы должны использовать параметризованные запросы для вашего SQL - так, как вы это делаете в настоящее время, вы открыты для атак с использованием SQL-инъекций.

1 голос
/ 28 июля 2011

Проверка:

  • В aspx есть текстовый элемент управления с id = "txt_uname"
  • Убедитесь, что этот текстовый элемент управления имеет runtat = server.
0 голосов
/ 28 июля 2011

Операторы после Response.Redirect () не будут выполняться, потому что этот (Redirect) метод переносит пользователя на другую страницу.

Предложение: Не используйте жестко запрограммированную строку SQL,Используйте параметризованные операторы SQL или хранимые процедуры.

string password=string.Empty;
using(SqlConnection con = new SqlConnection("Data Source=xxxx-pc\\ddd;Initial Catalog=db_Login;User Id=sd;Password=ds;"))
{
    using(SqlCommand com = new SqlCommand("select password from tab_userinformation where Username=@p1", con))
    {
        com.Parameters.AddWithValue("@p1",txt_uname.Text);
        con.Open();
        object retValue=com.ExecuteScalar();
        if(retValue!=null)
        {
            password=retValue.ToString();
        }
        con.Close();
    }
}

if (!string.IsNullOrEmpty(password))
{
    if (password== txt_pwd.Text)
    {
        Session["user"] = txt_uname.Text;
        Response.Redirect("default_Page.aspx");
    }

}
0 голосов
/ 28 июля 2011

Код выше должен выглядеть следующим образом:

if (dr[0].ToString() == txt_pwd.Text)
    {
        Session["user"] = txt_uname.Text;
        Response.Redirect("default_Page.aspx");

это будет работать. Когда вы перенаправляете на какую-то другую страницу, элемент управления не возвращается к операторам после «redirec». Следовательно они не выполнены. Вместо этого операторы внутри загрузки страницы "default_Page" начнут выполнять

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