我有一个使用Entity Framework的webAPI。我正在尝试在本文后面的会话变量中缓存一些数据:
https://msdn.microsoft.com/en-us/library/system.web.httpcontext.session(v=vs.110).aspx
我似乎无法做到这一点。 Session对象不可用。
在我的控制器中,我试试这个:
Session [“mappings”] = mappings;
...但它无法识别会话是什么。
我也试试这个:
HttpContext.Current.Session [“mappings”] = mappings;
......而且这个:
Page.Session [“mappings”] =映射;
...但它不知道HttpContext或Page是什么。
我在项目参考中包含System.Web。我也在我的web.config中包含了这个:
......就像这篇文章所说:
https://msdn.microsoft.com/en-us/library/ms178581(v=vs.110).aspx
......但无济于事。
我的同事建议这是因为我们的webAPI是RESTful,这意味着它是无状态的,所以没有会话对象。但是,我们知道有办法解决这个问题。我需要的只是某种方式将数据保存在某种缓存中,这种缓存可以在多个请求中存活。
我还需要可以在EF实体(不仅仅是webAPI控制器)内部使用的东西。
有谁知道如何解决这个问题?感谢。
答案 0 :(得分:0)
正如您的同事正确建议的那样,API是无状态的,每个请求都是独立的,需要拥有完成请求所需的所有数据。
但是,您可以添加缓存层,但这不会通过Session对象完成。会话在API中没有任何意义。
在这里查看一些想法:Caching Data in Web API