11

我们想出了如何使用 webapi Sample here启用会话状态

现在我们有了 WebApi 2 属性路由,所以我们不再有路由对象来注入自定义处理程序。

有没有办法通过属性路由启用会话状态?

4

3 回答 3

7

您需要将此添加到global.asax

protected void Application_PostAuthorizeRequest() 
{
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}

然后您可以通过以下方式访问会话:

HttpContext.Current.Session
于 2014-06-03T03:19:44.260 回答
-1

在 global.asax

Private Sub WebApiApplication_PostAuthorizeRequest(sender As Object, e As EventArgs) Handles Me.PostAuthorizeRequest
     System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required)
End Sub
于 2015-01-06T17:49:37.147 回答
-2

您可以使用SessionStateUtility类来获取会话状态。只需致电:

var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)

Api 控制器是为 RESTful 服务而设计的,通常应该是无状态的。不每次都加载会话是使它们重量更轻的原因之一。

于 2014-02-10T16:48:16.190 回答