В ASP.NET приложении используется следующий синглтон
public class MyClass
{
private MyClass() {}
public static MyClass Instance = new MyClass();
}
На кассини все ок, а вот когда работает под IIS 7.5 почему-то существует несколько экземпляров Instance.
С чем это может быть связано? IIS 7.5 создает несколько доменов?
Здравствуйте, FreddieM, Вы писали:
FM>На кассини все ок, а вот когда работает под IIS 7.5 почему-то существует несколько экземпляров Instance. FM>С чем это может быть связано? IIS 7.5 создает несколько доменов?
Постоянно существуют?
Начиная с 6-й версии IIS поддерживает ресайклинг, при котором в течении короткого времени могут существовать несколько копий Application. Хотя бы уже по этой причине желательно учитывать вероятное существование нескольких экземпляров любых объектов, которые казалось бы должны существовать в единственном экземпляре.
К сожалению, я не знаком с 7.5 в достаточной мере, чтобы идентифицировать проблему.
Здравствуйте, FreddieM, Вы писали:
FM>В ASP.NET приложении используется следующий синглтон
FM>На кассини все ок, а вот когда работает под IIS 7.5 почему-то существует несколько экземпляров Instance. FM>С чем это может быть связано? IIS 7.5 создает несколько доменов?
При изменении сборки, домен может оставаться старый — просто, будет загружена новая dll вместе с новым синглтоном в ней.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>При изменении сборки, домен может оставаться старый — просто, будет загружена новая dll вместе с новым синглтоном в ней.
Здравствуйте, FreddieM, Вы писали:
FM>В ASP.NET приложении используется следующий синглтон
FM>
FM>public class MyClass
FM>{
FM> private MyClass() {}
FM> public static MyClass Instance = new MyClass();
FM>}
FM>
FM>На кассини все ок, а вот когда работает под IIS 7.5 почему-то существует несколько экземпляров Instance. FM>С чем это может быть связано? IIS 7.5 создает несколько доменов?
А в AppPool количество отдельных процессов равняется единице?
Здравствуйте, FreddieM, Вы писали:
FM>Здравствуйте, TK, Вы писали:
TK>>При изменении сборки, домен может оставаться старый — просто, будет загружена новая dll вместе с новым синглтоном в ней.
FM>Сборка не изменялась
Хотя нет, я часто обновляю приложение — компилирую деплой-проект и заменаю бины на сервере, мб из-за этого? Но вроде приложение рестартится.
Здравствуйте, zhech, Вы писали:
Z>Здравствуйте, FreddieM, Вы писали:
FM>>В ASP.NET приложении используется следующий синглтон
FM>>
FM>>public class MyClass
FM>>{
FM>> private MyClass() {}
FM>> public static MyClass Instance = new MyClass();
FM>>}
FM>>
FM>>На кассини все ок, а вот когда работает под IIS 7.5 почему-то существует несколько экземпляров Instance. FM>>С чем это может быть связано? IIS 7.5 создает несколько доменов?
Z>А в AppPool количество отдельных процессов равняется единице?
Здравствуйте, FreddieM, Вы писали:
FM>>Сборка не изменялась FM>Хотя нет, я часто обновляю приложение — компилирую деплой-проект и заменаю бины на сервере, мб из-за этого? Но вроде приложение рестартится.
Например, посмотрите свойство конфигурации numRecompilesBeforeAppRestart. Можно сделать обновление web.config для принудительного рестарта приложения.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, FreddieM, Вы писали:
FM>Хотя нет, я часто обновляю приложение — компилирую деплой-проект и заменаю бины на сервере, мб из-за этого? Но вроде приложение рестартится.
Может вы не понимается правильно слово "рестартится"? При изменении какой-либо сборки иис не обязательно будет использовать новый аппдомен. Он может в старый загрузить новую версию сборки и создаст новые аспешные системные объекты, в результате чего будет HttpApplication.Start старт событие.