Member 10752313 Ответов: 2

Как получить доступ к состоянию сеанса клиента из серверной программы с помощью C#


Как получить или какой механизм использовать, чтобы состояние сеанса клиентского запроса можно было получить в серверной программе с помощью c#, то есть мы используем session["anyName"] на странице asp для получения идентификатора, но что будет использоваться в консольном приложении сервера, чтобы можно было обработать несколько клиентских запросов. Пожалуйста, дайте мне механизм, который будет использоваться для выполнения этой задачи?

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

Не имею ни малейшего представления о том, чтобы выполнить эту задачу

F-ES Sitecore

Вам нужно будет реализовать собственное управление сеансом. Каждому клиенту потребуется ключ, поэтому вам нужно случайным образом создать значение для ключа и записать этот ключ в ответ в виде файла cookie, чтобы клиент повторно отправлял его с каждым запросом. Ваш сеанс может находиться в памяти, поэтому у вас будет Dictionary , где строка является ключом, а SessionObject - коллекция пар ключ \ значение, которую вы можете сохранить, как в сеансе asp.net. Таким образом, вы должны прочитать ключ сеанса из файла cookie, а затем получить доступ к данным этого пользователя, просмотрев этот ключ в словаре. Или вы можете сохранить сеанс в базе данных, используя аналогичную технику, только данные находятся в таблицах. Вам также необходимо управлять истечением срока действия сеанса.

ZurdoDev

Я бы предложил опубликовать это решение, но только упоминая БД. Если он находится в памяти, то он не будет работать с обоими asp.net и их собственное приложение. У меня сложилось впечатление, что они хотят, чтобы сайт работал, но и это другое приложение имело доступ к сеансу. БД-это единственный реальный вариант, который я вижу для этого.

На самом деле, это просто звучит как плохой дизайн, но я, возможно, что-то упускаю.

F-ES Sitecore

Если вы посмотрите на другие его вопросы, то увидите, что он пытается эффективно написать свой собственный веб-сервер. Однако не на 100% ясно, что именно означает этот пост, и именно поэтому я неохотно публикую его в качестве решения :) Я не могу понять, пытается ли он "поделиться" сеансом между своим консольным приложением и asp.net приложение (невозможно) или если он просто реализует свою собственную версию сеанса.

Member 10752313

Спасибо, на самом деле у меня есть две html-страницы под названием Request.html и Landing.html. В Request.html у меня есть форма с методом post. В Landing.html I разнесенные поля из Request.html это должно быть показано. Это должно быть обработано через серверную программу. Мой сервер имеет отступ для обработки нескольких запросов. Поэтому, если я сгенерирую ключ с помощью guid() и установлю в ответ cookie, то будет ли он возвращен в Landing.html погрузка?

F-ES Sitecore

Если ваш серверный код отправляет request.html клиенту, то если вы добавите файл cookie с вашим идентификатором сеанса вместе с ответом, то когда клиент отправит форму и запросит landing.html затем он должен передать этот файл cookie обратно в ваш код, где вы сможете его прочитать...если клиент правильно запрограммирован. Если клиент является веб-браузером, то он будет правильно запрограммирован на обработку файлов cookie, и вы будете в порядке. Если клиент также является чем-то, что вы написали сами, то вам нужно будет убедиться, что ваш код правильно обрабатывает файлы cookie.

Member 10752313

Итак, мой вопрос заключается в том, как я могу сгенерировать идентификатор сеанса в моем серверном коде для запроса клиента?

F-ES Sitecore

Самый простой способ-просто использовать GUID

Guid id = Guid.Метод newguid();

Member 10752313

@F-ES Sitecore большое вам спасибо за эту идею.

2 Ответов

Рейтинг:
2

RedDk

Не знаю, почему это необходимо, но для того, чтобы улучшить вопрос, нужно каким-то образом использовать элемент управления веб-страницей "улучшить вопрос", который отражает природу способности их браузера отправлять информацию обратно на сервер CP ...


Рейтинг:
19

Member 10752313

В серверной программе мы сгенерируем уникальный идентификатор клиента и передадим его в ответ в виде файла cookie.