在mvc中通过Ajax访问时,Session为null

时间:2017-10-16 10:37:05

标签: ajax asp.net-mvc asp.net-mvc-4 session session-variables

我的应用程序中有以下代码。 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.UserAccountnull

我有点困惑,因为有时候这种方法有效,有时则不然。这有什么问题?

1 个答案:

答案 0 :(得分:1)

更新:似乎是由浏览器引起的这个问题。浏览器中的某些设置可能导致会话为null(ASP.NET SessionId未在浏览器中设置)。当我使用不同的浏览器时,它工作。似乎也没有代码问题。