【问题标题】:How to persist an object for longer than a request如何将对象保留比请求更长的时间
【发布时间】:2017-06-21 19:32:28
【问题描述】:

我正在尝试实现一个非常简单的 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;
        }
    }
}

【问题讨论】:

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


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2018-08-28
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多