Сессия Web Api 2

Я не могу получить данные сеанса, находясь в веб-api 2. Я проверил, что cookie отправляет скрипт.

Я знаю, что лучшая практика веб-api 2 должна быть без гражданства, но из-за требований к проекту теперь необходимо быть полностью заполненным.

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

var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)

С приведенным выше решением я получаю исключение NULL в этой функции.

Я также попытался воспроизвести способ сделать это так, как вы бы в старой веб-api, изменив обработчик запроса с маршрута, но он недоступен в web api 2.

В настоящее время я устанавливаю некоторые переменные сеанса в mvc5. Это работает, и сеанс остается, но в любое время, когда я пытаюсь использовать сеанс, в то время как в web api 2 ниже значение null.

HttpContext.Current.Session

Ответы

Ответ 1

Добавить

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

в global.asax

Ответ 2

Если PostAuthorizeRequest не работает, попробуйте BeginRequest.