2015-08-26 12 views
3

При использовании веб-методов в WebForms эти методы должны быть объявлены как статические (или совместно используемые в VB) в их соответствующем коде страницы. В некоторых случаях мне нужны глобальные переменные, которые необходимо использовать несколькими веб-методами, и для их использования они также должны быть объявлены как статические.Глобальные переменные Веб-методы

У меня сейчас две проблемы. Когда несколько пользователей используют эти переменные при вызове веб-методов на одной и той же странице, поскольку они являются статическими, если они назначены во время взаимодействия многих пользователей, последнее значение этих переменных теперь для каждого пользователя, а не только для тех, кто их назначил , Я думал о том, чтобы сделать их статичными, но в то же время SET и GET их как свойство с ключом сеанса, но возникает другая проблема, если пользователь запрашивает одну и ту же страницу, например, на нескольких вкладках, переменные теперь могут быть изменен в каждом запросе страницы.

Мой вопрос: как я могу использовать переменные, которые могут использоваться веб-методами, которые уникальны для каждого пользователя и в то же время для каждого запроса пользователя?

+0

Объект сеанса. Кэш. - что если вы хотите, чтобы у каждого пользователя была своя переменная. Если они разделяют один - просто используйте 'synclock' –

+0

, если вы не хотите, чтобы он был разделен на нескольких вкладках, вы могли бы просто создать руководство или какую-то случайную строку при загрузке страницы, сохранить ее на клиенте и передать ее с помощью каждого веб-метода позвонить в качестве ключа? Сказав это, я согласен с ответом Алексея, что лучше быть без гражданства. Что происходит, когда кто-то закрывает свой браузер? данные сохраняются в памяти сервера до следующего пула приложений? – rdans

ответ

0

Как правило, лучше иметь службу без состояния и передавать всю необходимую информацию в качестве параметра вызова.

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

Смежные вопросы