Вот мой сценарий.
У меня есть решение ASP.NET MVC с 3 проектами. Данные, Интернет и служба Windows. Слой данных имеет статические (не поточно-ориентированные) свойства, которые отправляются и получают данные, которые в противном случае сохраняются в статическом закрытом поле. Смотрите ниже:
private static int? _userCount;
public static int UserCount
{
get
{
if (!_userCount.HasValue)
{
_userCount = GetUserCount();
}
return _userCount.Value;
}
set
{
_userCount = value;
}
}
Это прекрасно работает для моих нужд. На веб-уровне я вызываю метод Service на своем уровне данных всякий раз, когда добавляю нового пользователя, и устанавливаю UserCount = NULL
. Таким образом, при следующем обращении к сайту он будет получать новый счетчик. Это тоже работает, как и ожидалось.
У меня также есть служба Windows, которая может создавать пользователей через процесс импорта. Он вызывает тот же метод SaveUser
, что и веб-слой, который снова должен иметь значение Null out свойства UserCount. Тогда я бы подумал, что смогу быть на сайте и обновить страницу, чтобы она снова получила счетчик новых пользователей. Однако, это не так.
Я могу пройтись по коду и увидеть, что Сервис нажал на UserCount = NULL
, но он как веб-слой не распознает его, даже если он вызывает то же свойство.
Я должен выполнить сброс IIS каждый раз, когда служба Windows вводит пользователя, чтобы очистить статические свойства. Любые мысли о том, почему это будет вести себя по-разному при создании пользователя в службе и на веб-уровне через пользовательский интерфейс?