2

アプリケーション起動時に一度だけweb.configを更新したい。このために、Global.asax で application_start メソッドを使用できると考えました。application_start は通常、最初のリクエストが Web サイトに対して行われたときに 1 回だけ呼び出されますが、System.Web.Configuration.WebConfigurationManager または Microsoft.Web.Administration.ServerManager を使用して web.config を更新すると、http リクエストごとに呼び出されます。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 Web アプリケーションを作成し、このコードを global.asax に追加して、IIS でホストできます。次に、ページを数回更新し、更新ごとにイベントが登録されていることをイベント ログで確認します。

このように構成ファイルが更新されると、各リクエストに対して application_start が呼び出されるのはなぜですか? 各リクエスト中ではなく、アプリケーションの起動後に web.config セクションを更新するにはどうすればよいですか?

4

0 に答える 0