Asp.net web api WebAPI 2属性路由启用会话状态

Asp.net web api WebAPI 2属性路由启用会话状态,asp.net-web-api,asp.net-web-api-routing,Asp.net Web Api,Asp.net Web Api Routing,我们了解了如何使用webapi启用会话状态 现在我们有了WebApi 2属性路由,所以我们不再有用于注入自定义处理程序的路由对象 有没有办法通过属性路由启用会话状态?您可以使用该类获取会话状态。只要打电话: var session=SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current) Api控制器是为restful服务设计的,通常应该是无状态的。不每次加载会话是使会话更轻的原因之一。您需要将其添加到glo

我们了解了如何使用webapi启用会话状态

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

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

您可以使用该类获取会话状态。只要打电话:

var session=SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)

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

您需要将其添加到global.asax

protected void Application_PostAuthorizeRequest() 
{
    System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}
然后,您可以通过以下方式访问会话:

HttpContext.Current.Session
在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

@RolandoCC:您需要编写
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required)global.asax
中的
Application\u postauthorizereRequest
事件中的code>行。我尝试过这种方法,但这种方法有一个严重的缺陷:会话确实存在,但是每个请求的SessionID都不同。