Ответ 1
Добавить
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}
в global.asax
Я не могу получить данные сеанса, находясь в веб-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
Добавить
protected void Application_PostAuthorizeRequest()
{
System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
}
в global.asax
Если PostAuthorizeRequest не работает, попробуйте BeginRequest.