Member 10752313 Ответов: 1

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


Я разрабатываю сервер с помощью консольного приложения.
На стороне клиента у меня есть две сессии Session ["Name"], Session ["UserId"]. Что мне нужно, так это код для получения имени сеанса и его значения на сервере с помощью консольного приложения C#?

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

Я получу файл cookie для идентификации клиента, но не получу, где имя сеанса и идентификатор сохраняются в запросе

1 Ответов

Рейтинг:
0

OriginalGriff

Сеансы не являются клиентской стороной, они являются серверной стороной - как и весь код C#. На клиенте выполняется только Javascript, C# и VB всегда выполняются на сервере и не имеют прямого доступа к клиентским ресурсам.

Таким образом, доступ к переменным сеанса на стороне сервера тривиален:

string userName = Session["Name"].ToString();
Вы можете получить доступ к переменным сервера на стороне клиента в Javascript:
<script type="text/javascript">
    function showName() {
        alert('<%=Session["Name"].ToString() %>');
    }
</script>


Member 10752313

На самом деле я разрабатываю сервер, мой вопрос заключается в том, как сеанс["имя"], установленный в веб-форме, доступен на моем сервере для создания уникального идентификатора, т. е. как пара имя-значение, созданная в веб-форме, отправляется на сервер?

OriginalGriff

Не пытайтесь печатать как можно меньше: мы получаем только то, что вы печатаете для работы, мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли!

Само по себе это предложение не имеет смысла: если переменная сеанса была создана - и не имеет значения, откуда она была создана, - то применяются две вещи.
1) он находится в коллекции сеансов, чтобы код C# мог получить к нему прямой доступ.
2) он создается серверным кодом, даже если этот код выполняется при загрузке страницы как часть процесса генерации HTML, как в предупреждающем сообщении в приведенном мной примере.

Member 10752313

Хорошо.
Я постараюсь внести ясность.


Я создал уникальный идентификатор для каждого клиентского запроса на сервере как
Guid clientId = Guid.Метод newguid();
Куки cookie посредством setcookie = новый файл "cookie" ("ASPSESSIONID", параметр ClientID.Метод toString());
HttpListenercontext.Ответ.AppendCookie(cookie посредством setcookie);


Если клиент установил сеанс ["Name"]=Roy; как я могу получить доступ к имени Roy на моем сервере с помощью HttpListenerContext?

OriginalGriff

Хм. Вы понимаете, что не показываете никакой связи между "Роем" и вашим значением Guid? И без некоторого представления о том, как они связаны - и особенно о том, как они постоянно хранятся, - мы не можем иметь никакого представления о том, как получить их позже?
Почему бы не сохранить это имя и в вашем файле cookie? Или получить доступ к вашей БД с помощью Guid?

F-ES Sitecore

Обычно сеанс существует только на сервере, клиент никогда не собирается устанавливать переменные сеанса. Как говорит Грифф, если вам нужен механизм, при котором клиент и сервер могут совместно использовать состояние, то хранение этих данных в файлах cookie-это правильный путь, если состояние необходимо сохранить. Если данные просто передаются от клиента к серверу, то это делается с помощью строки запроса или переменных формы.