Сеанс веб-API 2

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

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

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

var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current)

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

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

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

HttpContext.Current.Session

person kevindstanley    schedule 24.02.2014    source источник
comment
Вам нужно не только подтвердить отправку файла cookie; вам необходимо подтвердить, что это тот же тот же файл cookie идентификатора сеанса, который используется в приложении MVC. Бьюсь об заклад, у вас есть два разных идентификатора сеанса.   -  person John Saunders    schedule 25.02.2014
comment
Они не разные. Я также убедился, что это один и тот же идентификатор сеанса.   -  person kevindstanley    schedule 25.02.2014
comment
@JohnSaunders У меня ситуация, о которой вы говорите - у меня разные идентификаторы сеансов. Почему так случилось?   -  person MichaelJCox    schedule 23.10.2014


Ответы (2)


Добавлять

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

в global.asax

person Dejo    schedule 18.03.2014
comment
Сладкое сработало. Будет ли это работать на веб-сайтах Windows Azure в веб-ферме с использованием Redis или чего-то подобного? - person Shumii; 14.09.2014
comment
У меня это событие не срабатывает? - person DavidB; 07.05.2015
comment
Я не уверен, правильно ли я тестирую, но для меня sessionId отличается при извлечении в контроллере mvc и контроллере api, что делает его бесполезным для меня. - person CularBytes; 30.11.2015

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

person deepakjg    schedule 03.10.2016
comment
Я думаю, он имел в виду ответ @Dejo - person Lelis718; 17.02.2017