Обновление переменной приложения в полночь в классическом ASP
У меня есть классическое приложение ASP, в котором строка подключения хранится как переменная приложения и инициализируется в Application_OnStart()
событие.
Я хочу менять эту строку подключения каждую полночь и указывать на другую базу данных.
Я подумал о чем-то вроде наличия XML для строки подключения, используйте C# EXE с планировщиком задач, чтобы изменить это, а затем перезапустите IIS и, наконец, прочитайте измененную строку подключения из XML в Application_OnStart()
, но я не хочу, чтобы пользователи теряли свои сессии. Кроме того, существует огромное количество мест, где используется эта строка подключения, поэтому я не могу думать о добавлении логики для чтения XML в каждом из этих мест (с компонентом C# COM).
Есть ли способы добиться этого? Есть ли какое-либо хранилище / событие и т. Д., Где можно хранить эту строку подключения и обновлять ее без перезапуска приложения?
Любая помощь могла бы быть полезна.
2 ответа
Когда ваше приложение запущено, вы можете добавить наблюдателя файловой системы в файл конфигурации, который будет запущен при его изменении. В этом обработчике событий вы можете изменить переменную, которая представляет строку подключения.
Затем вы можете иметь свой исполняемый файл в планировщике задач для изменения файла конфигурации.
Вы можете использовать переменную уровня приложения, которую вы изменяете с помощью кода - я не думаю, что он сбрасывает сессии пользователей:
<%@ Language="VBScript" %>
<%
Application.Lock
Application("ConnString") = "new connection string"
Application.Unlock
%>
Вы можете создать страницу ASP, которая вносит изменения. Если это то, что может быть автоматизировано, вы можете написать что-то простое, чтобы вызвать эту страницу и запланировать ее.