我们想出了如何使用 webapi Sample here启用会话状态
现在我们有了 WebApi 2 属性路由,所以我们不再有路由对象来注入自定义处理程序。
有没有办法通过属性路由启用会话状态?
您需要将此添加到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
您可以使用SessionStateUtility类来获取会话状态。只需致电:
var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)
Api 控制器是为 RESTful 服务而设计的,通常应该是无状态的。不每次都加载会话是使它们重量更轻的原因之一。