ASP.NET Статические переменные C# глобален?

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

В Linux, конечно, можно использовать тот же вид техники. Запишите программу, которая вставляет модуль в рабочее ядро. Свяжитесь с модулем и скажите его который дескрипторы закрыться. Будет одинаково опасно сделать так.

20
задан Dal 13 October 2009 в 21:59
поделиться

4 ответа

Да, в ASP.NET время жизни статических полей предназначено для домена приложения (обратите внимание, что это немного отличается для универсальных типов).

Я бы рекомендовал использовать сеанс сервера для хранения данных, которые вы хотите связать с экземпляром сеанса клиентского браузера (логин пользователя). т.е.

Session["_groupID"] = Convert.ToInt16(Request.QueryString["GroupID"]);

вы можете получить его, выполнив:

short groupID = Convert.ToInt16(Session["_groupID"]);
22
ответ дан 29 November 2019 в 23:37
поделиться

Статические переменные имеют такое же время жизни, что и домен приложения, в котором они были созданы. Поэтому, если вы получите неправильные значения, могут быть какие-то проблемы в логике приложения или еще. Вы должны использовать SessionState для данных для каждого пользователя.

2
ответ дан 29 November 2019 в 23:37
поделиться

Неверно говорить, что статическая переменная существует во всем приложении. Фактически они существуют на двух разных уровнях

  1. Для неуниверсальных типов существует одна статическая переменная для каждого домена приложения
  2. Для универсальных типов существует одна статическая переменная для каждого универсального экземпляра на каждый домен приложения

Приложение может содержать много доменов приложений, и это правда в нескольких типах приложений.

Если вы хотите сохранить пользовательские настройки, используйте переменную сеанса.

18
ответ дан 29 November 2019 в 23:37
поделиться

Вы можете потратить некоторое время, чтобы ознакомиться с тем, за что ключевое слово static отвечает в C #. Прочтите здесь: static на разных языках и MSDN здесь .

2
ответ дан 29 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: