我对将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”],然后在整个应用程序中使用它。