Запуск приложения вызывается каждый раз, когда страница обновляется при изменении конфигурации в application_start

Я хочу обновить web.config только один раз при запуске приложения. Для этого я подумал, что могу использовать метод application_start в Global.asax. Хотя application_start обычно вызывается только один раз, когда к веб-сайту поступает первый запрос, он вызывается для каждого http-запроса, когда я использую System.Web.Configuration.WebConfigurationManager или Microsoft.Web.Administration.ServerManager для обновления web.config. Пример кода с WebConfigurationManager находится здесь:

protected void Application_Start(object sender, EventArgs e)
    {
        Configuration config =WebConfigurationManager.OpenWebConfiguration(null);
        config.AppSettings.Settings.Remove("MyVariable");
        config.AppSettings.Settings.Add("MyVariable", "MyValue");
        config.Save(); 

        // Add event to event log to monitor when this method is called
        string sSource= "TryApplicationStart";
        string sLog= "Application";
        string sEvent= "Sample Event"; 

        if (!EventLog.SourceExists(sSource))
            EventLog.CreateEventSource(sSource, sLog);
        EventLog.WriteEntry(sSource, sEvent);
        EventLog.WriteEntry(sSource, sEvent,
            EventLogEntryType.Warning, 234);

    }

Вы можете создать пустое веб-приложение asp.net, добавить этот код в global.asax и разместить его в IIS. Затем обновите страницу пару раз и увидите в журнале событий, что для каждого обновления зарегистрированы события.

Почему application_start вызывается для каждого запроса, когда файл конфигурации обновляется таким образом? Как я могу обновить разделы web.config после запуска приложения, а не во время каждого запроса?

0 ответов

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