Сеанс потерян в ядре .Net при выполнении запроса на выборку из JS - PullRequest
0 голосов
/ 18 мая 2018

При выполнении запроса от JS к ранее установленному значению сеанса контроллера теряется.Как мне это предотвратить?Ниже var instanceId возвращает ноль.

    [AllowAnonymous]
    public JsonResult GetEmails()
    {
        var instanceId = HttpContext.Session.GetString("instanceId");
        HttpContext.Items.Add("instanceId", instanceId);
        var result = someapicall;
        var returnObj = JsonConvert.SerializeObject(result);
        return Json(returnObj);
    }

JS - это просто стандартная выборка для указанного действия контроллера.

1 Ответ

0 голосов
/ 18 мая 2018

Отправляет ли ваш запрос JavaScript fetch вместе с ним файлы cookie ASP.NET Core?Состояние сеанса использует cookie для отслеживания и идентификации запросов и загрузки правильных данных.Если запрос не отправляет cookie, он не сможет определить, к какому сеансу привязан запрос.

Пожалуйста, обратитесь к документации для получения дополнительной информации о состоянии сеанса вASP.NET Core.

Редактировать
Для полноты: решение состоит в том, чтобы добавить credentials: true для fetch -запросов, чтобы он отправлял файлы cookie вместе с запросом.Например:

{ method: 'GET', credentials: 'include' }

Для запросов AJAX необходимо добавить свойство withCredentials, имеющее ту же цель:

$.ajax({
   url: '/some/url',
   // ...
   xhrFields: {
      withCredentials: true
   }
});

Или установить его глобально, для всех запросов:

$.ajaxSetup({
    // ...
    xhrFields: {
       withCredentials: true
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...