2016-12-29 20 views
0

私は必要なものすべてを指定するカスタム設定ファイル(Settings.xml)を持っています。 Webサイトを実行している間にそのファイルを変更すると、サイトはもちろん、再起動します。IISサイトのカスタム設定を再起動せずに更新する

いるSettings.xmlは、XMLと同じ構造を持っているし、私は

private static readonly XDocument Settings = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "\\Settings.xml"); 

サイトがIIS 8.5で実行さSettingsオブジェクトで作業オブジェクトに読み込まれます。

Settings.xmlを更新することはできますか?ウェブサイトを強制的に再起動する必要はありませんか?

自動的に再起動するのはIISですか?

+0

ショット答えを - はい、それはです。設定をオブジェクトに読み込むコードを表示します。今いくつかの更新をしました@teovankot –

+0

は、[ 'CacheDependency'クラス]にいくつかの情報 – MrProgram

+0

ルックがありませんでした(https://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency(V =対.110).aspx)を使用して、自動リロード動作を実装します。 – Tomalak

答えて

2

あなたはこのようなすべてのファイルの変更にあなたの設定を読み取ることができます。

private static DateTime? _lastSettingRead; 
private static XDocument _cahedSettings; 
private static XDocument Settings 
{ 
    get 
    { 
     var settingsPath = AppDomain.CurrentDomain.BaseDirectory + "\\Settings.xml"; 
     //Get last change Settings file datetime 
     var lastSettingChange = System.IO.File.GetLastWriteTime(settingsPath); 
     //If we read first time or file changed since last read 
     if (!_lastSettingRead.HasValue || lastSettingChange > _lastSettingRead) 
     { 
      _lastSettingRead = lastSettingChange; //change read date 
      _cahedSettings = XDocument.Load(settingsPath); //load settings to field 
     } 
     return _cahedSettings; //return cached settings from field 
    } 
} 
+1

IISがWebサイトを再起動しないようにしますか?要点は、設定ファイルを変更するときにウェブサイトを再起動したくないということです(または、何が起きているのかわからない)。 – MrProgram

+0

@MrProgramはいそうです。要点は、 'Settings'プロパティから設定を取得しようとする時です。最後に読み込んだ後にファイルが変更されたことを確認します。もしそうなら、このコードはIISをリセットせずに設定を再度読み込みます。 –

関連する問題