0

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

4

2 回答 2

3

是的,如果 Web API 托管在将值存储在会话中的同一 Web 应用程序中,则可以:

HttpContext.Current.Session

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

于 2012-10-03T08:56:43.103 回答
1

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

取决于你的情况,但MemoryCache如果你想缓存一些东西,你可以使用它。

于 2012-10-03T08:54:28.300 回答