Статические переменные находятся на уровне приложения, поэтому они распределяются между сеансами.
Итак, ваша ситуация:
Если пользователь входит в систему успешно, я устанавливаю IsLoggedInSuccessfull в качестве статической логической переменной в общем классе.
Это будет означать, что сейчасдля каждый пользователь , входящий в веб-приложение, если вы проверите переменную IsLoggedInSuccessfull
, значение будет истинным.Таким образом, вы, вероятно, хотите сохранить эту переменную в качестве переменной сеанса, а не статической переменной.
Также имейте в виду, что если у вас есть веб-ферма, на каждом сервере запущен экземпляр вашего веб-приложения - это означает, что в каждом экземпляре приложения статические переменные могут иметь разные значения (если выне осторожно).Тот же принцип для веб-садов ...
Относительно вашего второго вопроса:
CLR не управляет безопасностью потоков - вам нужно позаботиться об этом самостоятельно.При этом, если статический метод сам по себе не использует глобальные статические переменные и если экземпляр User
, который вы передаете статическому методу, уникален, вы должны быть в безопасности.Если экземпляр User
не уникален, убедитесь, что код безопасности потока указан в соответствующих местах класса User
.