在向Web API控制器发出请求后重置会话变量

时间:2016-01-21 09:31:52

标签: c# asp.net session asp.net-web-api

我通过实施跟随答案Enable session in Web Api 2在Web API中使用Session。但是我遇到了Session变量的问题。

在业务对象类中,我有一个用于存储已更改记录的属性。

public class BaseBO
{
  protected HttpSessionState _session;

  public BaseBO()
  {
      _session = HttpContext.Current.Session;
  }

  private IList<FundInvestor> _investors;
  public  IList<FundInvestor> Investors
  {
    get
    {
        _investors = (IList<FundInvestor>)_session["_investors"];
        if (_investors == null)
        {
            _investors = new List<FundInvestor>();
            _session["_investors"] = _investors;
        }
        return _investors;
    }
    set
    {
        _investors = value;
        _session["_investors"] = value;
    }
  } 
}

在客户端,保存表单时,我向服务器发出两个请求。首先,我使用已更改记录的列表调用BaseBO实例的方法AddInvestorQueue。已更改的记录将添加到Investors的列表BaseBO中。 第二个请求,我调用方法Edit,我将在其中获取列表Investor的元素并将这些记录更新到数据库。

我的问题是,当我调用第二个请求时,列表Investors没有任何元素。请注意,第一个请求中的Investors中添加了记录。我不知道为什么重置该列表。

使用ASP.NET Web窗体时,不会发生此问题。

有没有人遇到过类似的问题?我遇到了这个问题。任何建议对我都很有帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

Web API中的

会话是无状态的。 我会为您提供基于令牌的身份验证,您可以在https://github.com/tb1998tb/token(网络api + angular)上看到。 祝你好运!