我可以在web api中访问Sessionstate吗?

时间:2012-10-03 08:15:31

标签: jquery asp.net-mvc-4 asp.net-web-api

我创建了一个MVC应用程序,并在其中添加了名为ReportsApiController的新WebApi控制器。我在应用程序中创建了一个名为Session [“ReportId”] = 5的会话,并尝试从Web Api方法访问,但它抛出了空引用异常。我使用$ .getJASON方法访问WebApi。让我知道如何解决它。

2 个答案:

答案 0 :(得分:3)

是的,如果Web API托管在会话中存储该值的同一Web应用程序中,您可以这样做:

HttpContext.Current.Session

但你不应该这样做。这违反了Web API的无状态特性。如果您需要将一些信息传递给此API,请不要依赖某些会话状态。以模型的形式传递此信息。或者,如果您不想传递复杂数据,只需将此信息保存在某些公共数据存储区(例如,可能是数据库)中,然后只将ID传递给Web API,以便从数据存储区中检索该值。 p>

答案 1 :(得分:1)

开箱即用,Web API是STATELESS服务,因此Session内容不再适用,它不像使用Session,ViewState模拟有状态网站的ASP.NET Web表单。

取决于您的情况,但如果您想要缓存某些内容,则可以使用MemoryCache