В Интернете есть несколько сообщений об этом, но ни один из них, похоже, не дает окончательного ответа. Мой вопрос заключается в следующем. Если у меня есть статические свойства, объявленные только для получения/установки значений сеанса, являются потокобезопасными или это может вызвать проблемы? В моем приложении я добавил статические свойства в свой Global.asax, чтобы они служили своего рода центральной точкой входа для доступа к определенным значениям, например, я сохраняю текущего клиента следующим образом:
public static string CurrentClient {
get {
return HttpContext.Current.Session[Constants.SESSION_CURRENT_CLIENT] as string;
}
set {
HttpContext.Current.Session[Constants.SESSION_CURRENT_CLIENT] = value;
}
}
Обратите внимание, что я не устанавливаю никаких статических переменных в моем get/set, я просто ссылаюсь на текущий сеанс.
Приложение настроено так, что оно устанавливается как одно веб-приложение в IIS, но оно будет обслуживать несколько разных «экземпляров». В основном, в зависимости от того, на какой поддомен вы заходите, он затем установит все эти переменные сеанса по мере необходимости. Так, например:
client1.mydomain.com установит:
Global.CurrentClient = "client1";
client2.mydomain.com установит:
Global.CurrentClient = "client2";
Кажется, что это должно работать нормально и быть потокобезопасным, и два поддомена не будут спотыкаться друг о друга, потому что каждый из них должен иметь уникальные сеансы, но, похоже, именно это и происходит. По какой-то причине я получаю запросы к client1.mydomain.com, используя CurrentClient="client2".
Что здесь происходит, банда?