We figured out how to enable session state with webapi Sample here
Now we have WebApi 2 attribute routing, so we no longer have route object to inject custom handler
You can use the SessionStateUtility class to get the session state. Just call:
var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)
Api controllers are designed for restful services and should generally be stateless. Not loading the session every time is one of the things that makes them lighter weight.
You need to add this to global.asax
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}
Then you could access the session through:
HttpContext.Current.Session
in the 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