会话对象在WebAPI中不可用

时间:2018-04-10 20:35:52

标签: session asp.net-web-api

我有一个使用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控制器)内部使用的东西。

有谁知道如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

正如您的同事正确建议的那样,API是无状态的,每个请求都是独立的,需要拥有完成请求所需的所有数据。

但是,您可以添加缓存层,但这不会通过Session对象完成。会话在API中没有任何意义。

在这里查看一些想法:Caching Data in Web API