为什么将会话变量设置为值会在asp.net类中引发错误?

时间:2019-02-26 11:11:59

标签: c# asp.net-web-api model-view-controller c#-4.0

我对将Session变量设置为.cs文件(即class)中的类对象感到厌倦和沮丧,但是会引发错误:

对象引用未设置为对象的实例

我正在尝试通过此行开始会话:

HttpContext.Current.ApplicationInstance.Session["AndroidUsers"] = usrMdl;

我正在数据库层中执行此操作,因为此方法由webapi调用,而webapi又由android设备调用。该webapi继承自ApiController,其中不包含用于会话等的方法。

代码:

public class UsersRepository{

       public static List<UsersModel> AuthenticateUserRemote(LoginViewModel loginVM)
            {

                List<UsersModel> lstUsersInfo = new List<UsersModel>();
                // DataTable Declaration
                DataTable dt = new DataTable();

                SqlConnection conn = null;
                SqlCommand cmd = null;
                try
                {

                    //var UsersModel = (UsersModel)HttpContext.Current.Session["Users"];

                    string ConnectionString = Utility.getConnectionString();
                    conn = new SqlConnection(ConnectionString);
                    cmd = new SqlCommand("USERS_UserLogin", conn);

                    cmd.CommandType = CommandType.StoredProcedure;
                    SqlDataAdapter Adapter = new SqlDataAdapter(cmd);

                    cmd.Parameters.AddWithValue("@Email", loginVM.Email);
                    cmd.Parameters.AddWithValue("@Password", loginVM.Password);

                    conn.Open();
                    Adapter.Fill(dt);
                    conn.Close();

                    foreach (DataRow dr in dt.Rows) 
                    {
                        UsersModel usrMdl = new UsersModel();

                        usrMdl.Email = Convert.ToString(dr["Email"]);                      
                        usrMdl.UserName = Convert.ToString(dr["UserName"]);

    HttpContext.Current.ApplicationInstance.Session["AndroidUsers"] = usrMdl;

                        lstUsersInfo.Add(usrMdl);


                    }


                }
                catch (Exception ex)
                {

                    throw ex;
                }
                finally
                {
                    conn.Dispose();
                    cmd.Dispose();
                }
                return lstUsersInfo;
            }

即使usrmdl也不为空。

我也在上面的函数在同一类中尝试过此方法,但是没有起作用。

       public static UsersModel UsersModelSession 
            {
                get 
                {
                    return (UsersModel)HttpContext.Current.Session["AndroidUsers"];
                }
                set 
                {
                    HttpContext.Current.Session["AndroidUsers"] = value;
                }
            }

}

我尝试添加每个库,但没有一个起作用。

更新:

我正在尝试从此处启动会话,即Session [“ AndroidUsers”],然后在整个应用程序中使用它。

0 个答案:

没有答案