Обновление переменной приложения в полночь в классическом 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, которая вносит изменения. Если это то, что может быть автоматизировано, вы можете написать что-то простое, чтобы вызвать эту страницу и запланировать ее.

Другие вопросы по тегам