Я пытаюсь выяснить, как контролировать время жизни TISAPIApplication (написанного в Delphi XE) в IIS 7.5, но наблюдаю неожиданное поведение:
Пул приложений ISAPI и ВСЕ УРОВНИ конфигурации IIS/ISAPI настроены на запуск с анонимным доступом под определенной системной учетной записью, от самого веб-сервера до виртуального диска, пула приложений и конкретной библиотеки DLL — это НИКОГДА не меняется. Но каждый раз, когда другой пользователь делает запрос или тот же пользователь открывает новый сеанс браузера, веб-приложение повторно инициализируется.
Я ожидал, что веб-приложение будет инициализировано только при первом попадании или при сбросе IIS или повторном использовании пула приложений. Это поведение, которое я ожидал и которое мне НУЖНО - веб-приложение должно быть SINGLETON, которое порождает поток для каждого нового запроса, независимо от пользователя или пользовательских сеансов.
Клиенты работают под управлением IIS 8 или FireFox 6 (я считаю, что это не имеет значения - различия между ними, которые я наблюдал, связаны со схемами кэширования браузера и т. д., а не с приложением ISAPI).
Клиенты работают под управлением Win XP SP3 или Win 7 64 - ОС, похоже, не влияет на поведение.
Мониторинг/обратная связь:
Я регистрирую запись в журнале событий каждый раз, когда приложение ISAPI инициализируется, и возвращаю счетчик на веб-странице, указывающий количество запросов, обработанных приложением после инициализации, начиная с этого запроса.
Я работал с различными «расширенными настройками» на уровне пула приложений IIS 7.5 — пока безуспешно.
Может ли кто-нибудь объяснить поведение, которое я вижу, и как его изменить, чтобы экземпляр TISAPIApplication вел себя как синглтон?