如何将对象持久化的时间长于请求

时间:2017-06-21 19:32:28

标签: asp.net rest asp.net-web-api2

我试图实现一个非常简单的api。它应该实例化一个应该改变状态的电视对象(从关闭到开启,从开启到关闭)。我目前的问题是,在我改变get方法中的状态后,tv对象被重新实例化。

是否有一种简单的方法可以将对象持续时间超过一个请求?

这是我的代码:

public class TvController : ApiController
    {
       Tv tv = new Tv(null, null, false);

        // GET: api/Tv
        [HttpGet]
        public bool Get()
        {

            if (!tv.Status) { tv.Status = true; }
            else { tv.Status = false; }

            return tv.Status;
        }


public class Tv
    {
        public  string Channel { get; set; }
        public  string Volume { get; set; }
        public  bool Status { get; set; }

       public Tv(string channel, string volume, bool status)
        {
            Channel = channel;
            Volume = volume;
            Status = status;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

由于您的API是无状态的,因此您需要找到一种方法来使用某种查找表来保留请求(可能您将API密钥与其关联的对象一起存储在Redis节点中)

我不确定您是否可以将Session与API控制器一起使用,因为这可能会打败整个点,但如果可以,您可以执行以下操作。

您的代码需要更新才能执行此操作:

if( Session["TVObject"] == null) {
  Tv tv = new Tv(null, null, false);
  Session.Add("TVObject", tv);
} else {
  Tv tv = Session["TVObject"] as Tv;
}