Aravindba Ответов: 3

Как получить значение сеанса в файле класса VB в ASP.NET


Привет,
Мы используем файл класса, в котором мне нужно получить доступ к значению сеанса, которое присваивается на странице aspx.
Я создаю одну функцию в файле класса, когда я вызываю эту функцию из кода сервера (кнопка server side click event), я могу получить значение сеанса, которое назначено на странице aspx,
Но та же функция, которую я вызываю со стороны клиента (button client side event), я получаю такую ошибку.
Errorscreenshot : http://prntscr.com/mhtxnz[^]

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

Для получения значения сеанса в файле класса
Dim strusename As String = System.Web.HttpContext.Current.Session("username")


С уважением,
Аравинд

F-ES Sitecore

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

3 Ответов

Рейтинг:
2

Slacker007

сначала вы должны проверить, является ли сеанс нулевым, а если нет, то назначить его strusename Сеанс-это объект, и поэтому вам также нужно будет преобразовать его в строку.


В C#

protected string ApplicationReviewStatus
 {
    get => ViewState["ApplicationReviewStatus"]?.ToString() ?? string.empty;
    set => ViewState["ApplicationReviewStatus"] = value;
 }


Кроме того, вы делаете это в файле кода страницы. В C# это расширение (.aspx.cs). Реализовать это (или передать его в отдельный файл класса) так же просто, как передать его классу через параметр метода или свойство класса и т. д.


Рейтинг:
1

Richard Deeming

Как я тебе и говорил последний раз[^], если вы звоните в WebMethod, вам нужно включить состояние сеанса:

[WebMethod(EnableSession = true)]

Не делая этого, HttpContext.Current.Session будет возвращать null, и вы получите a NullReferenceException.


Aravindba

Привет , да выше код для веб-сервиса(asmx) и да можно получить сеанс, но я спросил в файле класса(.vb)

Richard Deeming

Если вы не включаете состояние сеанса для обработчика, то HttpContext.Current.Session будет возвращать null.

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

Рейтинг:
0

Maciej Los

Цитата:
когда я вызываю эту функцию из кода сервера (событие щелчка кнопки на стороне сервера), я могу получить значение сеанса, назначенное на странице aspx,
Но та же функция, которую я вызываю со стороны клиента (button client side event), я получаю ошибку


Извините, но я не понимаю, что вы имеете в виду, говоря: "со стороны клиентаЕсли вы можете сохранять переменные сеанса, вы должны уметь их читать.

Заметить что Session объект находится на стороне сервера. Видеть:
Цитата:
ASP.NET состояние сеанса позволяет сохранять и извлекать значения для пользователя во время его навигации ASP.NET страницы в веб-приложении. HTTP-это протокол без состояния. Это означает, что веб-сервер обрабатывает каждый HTTP-запрос для страницы как независимый запрос. Сервер не сохраняет никаких сведений о значениях переменных, которые использовались во время предыдущих запросов. ASP.NET состояние сеанса определяет запросы от одного и того же браузера в течение ограниченного временного окна как сеанс и предоставляет способ сохранения значений переменных в течение всего этого сеанса. По умолчанию, ASP.NET состояние сеанса включено для всех ASP.NET приложения.

Источник: ASP.NET общие сведения о состоянии сеанса[^]

Для получения более подробной информации, пожалуйста, смотрите:
Как сохранить значения в состоянии сеанса[^]
Как: считывание значений из состояния сеанса[^]
Реализация поставщика хранилища состояний сеанса[^]