Маршрутизация атрибута WebAPI 2 включает состояние сеанса

Мы выяснили, как включить состояние сеанса с помощью webapi Пример здесь

Теперь у нас есть маршрутизация атрибутов WebApi 2, поэтому у нас больше нет объекта маршрута для ввода пользовательского обработчика.

Есть ли способ включить сеансовое состояние с маршрутизацией атрибутов?

Ответы

Ответ 1

Вам нужно добавить это в global.asax

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

Затем вы можете получить доступ к сеансу через:

HttpContext.Current.Session

Ответ 2

в 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

Ответ 3

Вы можете использовать класс SessionStateUtility, чтобы получить состояние сеанса. Просто позвоните:

var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)

Контроллеры Api предназначены для обслуживания клиентов и, как правило, не имеют апатридов. Не загружая сессию каждый раз, это одна из вещей, которая делает их более легкими.