Как управлять состоянием сеанса, используя собственный идентификатор сеанса в веб-API ASP.NET?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как управлять состоянием сеанса, используя собственный идентификатор сеанса в веб-API ASP.NET?

Сообщение Anonymous »

Я разрабатываю приложение веб-API ASP.NET, в котором мне нужно управлять состоянием сеанса на основе идентификатора сеанса, отправленного из приложения Angular. Идентификатор сеанса должен быть создан, если он не существует, а если он уже существует, он должен вернуть существующее значение сеанса.
Проблема, с которой я сталкиваюсь, заключается в том, что при отправке идентификатора сеанса впервые он правильно создает сеанс. Однако когда я отправляю второй запрос с тем же идентификатором сеанса, он не находит существующий сеанс и вместо этого создает новый.
это код:
Контроллер:
[HttpGet]
[Route("GetAll/{sessionId}")]
// GET: api/Bookmark
public IHttpActionResult Get(string sessionId)
{
try
{
var session = GetSession(sessionId);

var repos = _getRepositoriesFromSession(session);

return Ok(repos);

}catch(Exception ex)
{
return BadRequest(ex.Message);
}
}

private List _getRepositoriesFromSession(HttpSessionState session)
{
var repos = session["Repositories"] as List;

if (repos == null)
{
repos = new List();
session["Repositories"] = repos;
}

return repos;
}

Как генерируется и обрабатывается сеанс:
protected HttpSessionState GetSession(string sessionId)
{
var context = HttpContext.Current;

// Ensure the session ID is correctly set in the context
if (context.Session == null || context.Session.SessionID != sessionId)
{
var sessionContainer = new HttpSessionStateContainer(
sessionId,
new SessionStateItemCollection(),
new HttpStaticObjectsCollection(),
10,
true,
HttpCookieMode.UseUri,
SessionStateMode.InProc,
false
);
SessionStateUtility.AddHttpSessionStateToContext(context, sessionContainer);
}

return context.Session;
}

Web.config:










Подробнее здесь: https://stackoverflow.com/questions/787 ... et-web-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»