我的应用程序中有以下代码。 Constants.SESSION_USER是一个字符串值。
public class BaseController : Controller
{
public Account UserAccount
{
get
{
if (Session[Constants.SESSION_USER] is User)
{
return Session[Constants.SESSION_USER] as User;
}
return null;
}
set
{
Session[Constants.SESSION_USER] = value;
}
}
}
以下是我将用户设置为Session
public class AccountController : BaseController
{
[HttpPost]
public JsonResult Login(LoginViewModel loginView)
{
User loggedInAccount = null;
// some logic to validate the user
// if no validation issues
User loggedAccount = new User(loginView.ID);
//set the logged account into the session
this.UserAccount = loggedAccount;
}
}
在以下代码中,我正在访问我之前在AccountController
[HttpPost]
public JsonResult GetSession()
{
User loggedInAccount = null;
if (this.UserAccount != null) // this.UserAccount is null
{
//get the user from the session
loggedInAccount = this.UserAccount;
}
}
通过ajax请求调用此GetSession()
方法时,this.UserAccount
为null
。
我有点困惑,因为有时候这种方法有效,有时则不然。这有什么问题?
答案 0 :(得分:1)
更新:似乎是由浏览器引起的这个问题。浏览器中的某些设置可能导致会话为null(ASP.NET SessionId未在浏览器中设置)。当我使用不同的浏览器时,它工作。似乎也没有代码问题。