Prakash Thirumoorthy Ответов: 1

Управление сеансами сервера в разных приложениях


Структура моего приложения:
Пользовательский интерфейс (HTML & angular JS) - Отдельных узлов проекта. Давайте рассмотрим размещенный URL-адрес (http://localhost:1437/UI)
API (WEB API & C#) - Отдельных узлов проекта. Давайте рассмотрим размещенный URL-адрес (http://localhost:1450/API)
Примечание: нет MVC

Мои все вызовы API из пользовательского интерфейса похожи на обычный http угловой вызов со ссылкой на url API.

Теперь я хотел сохранить некоторые данные сеанса(не большие значения, буквально один целочисленный идентификатор) в соответствии с требованиями. Я могу хранить данные сеанса только в проекте API, но не в проекте пользовательского интерфейса, так как здесь нет кода на стороне сервера.


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

Я мог бы понять, что проблема в том, что оба приложения независимы.

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


заранее спасибо! :-)

Что я уже пробовал:

Я могу добиться, если оба приложения размещены как одно!
Но моя архитектура приложения такова, что это должны быть 2 разных хоста

F-ES Sitecore

Вы пробовали Гугл для "asp.net сеанс совместного использования"? Там нет никаких готовых решений, вам, вероятно, придется реализовать какой - то общий поставщик сеансов самостоятельно.

Prakash Thirumoorthy

но общий доступ к сеансу зависит от SQL. Мое приложение работает как с MySQL, так и с SQL. Поэтому не может зависеть от него. :-(

F-ES Sitecore

Вы также можете использовать управление сеансами в памяти.

Prakash Thirumoorthy

Я попробую это сделать и дам вам знать

MadMyche

Принимает ли ваш проект пользовательского интерфейса файлы cookie из API?

Prakash Thirumoorthy

Нет, куки-файлы отключены

1 Ответов

Рейтинг:
0

MadMyche

Похоже, проблема заключается в том, что часть пользовательского интерфейса не принимает файл Cookie сеанса от WebAPI.
Если API не получает файл Cookie сеанса от клиента, он начнет новый сеанс при получении запроса.

Затем вам нужно будет включить файлы cookie в пользовательской части вашего проекта.
МС документы не имеют указания на это: HTTP Cookies in ASP.NET веб-API | Microsoft Docs[^]
Есть также некоторые пакеты ГИТ сторонних производителей, таких как CookieAwareWebClient, которые могут сделать это проще

Приложение 1
Сеансы без приготовления пищи когда-то были ответом, но больше не поддерживаются. Они также сделали действительно уродливые URL-адреса, когда они прикрепляются к строке запроса для идентификации сеанса
ASP.NET MVC и использование сеансов без поваров - переполнение стека[^]

Приложение 2
Перечитав ваш первоначальный пост, я вижу, что вы собираетесь иметь дело только с "буквально один целочисленный идентификатор" то, что вы могли бы сделать, - это отправить эти данные в виде заголовка ответа (зашифрованного, если это необходимо), а вызывающий пользовательский интерфейс получит их и отправит обратно в заголовках запроса.
Именно так работают некоторые API отслеживающие токены для идентификации и авторизации различных типов вещей


Prakash Thirumoorthy

спасибо, что опубликовали свой ответ.. но мое приложение не должно зависеть от файлов cookie

MadMyche

HTTP не имеет состояния, и как работает сеанс, он отправляет файл cookie для идентификации сеанса при последующих запросах.

Я обновляю свой ответ с некоторой дополнительной информацией.