Есть несколько сообщений об этом в Интернете, но ни один, кажется, не дает однозначного ответа.У меня вопрос такой.Если у меня есть статические свойства, объявленные, что только получение / установка значений Session является безопасным для потока или это может вызвать проблемы?В моем приложении я добавил статические свойства в свой 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" по некоторым причинам.
Что здесь происходит, банда?