2016-12-29 40 views
0

我有一個自定義設置文件(Settings.xml)在哪裏指定我需要的所有。當運行網站時更改該文件,當然,重新啓動。刷新IIS網站的自定義設置,而無需重新啓動它

將Settings.xml被讀入的是具有相同的結構與XML,然後我與Settings對象

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

該網站在IIS 8.5運行工作的對象。

是否可以更新Settings.xml而不強制網站重新啓動?

是否自動重啓IIS?

+0

射擊的答案 - 是的,它是。在您將設置讀入對象的位置顯示代碼。 –

+0

@teovankot現在做了一些更新,缺少一些信息 – MrProgram

+0

查看['CacheDependency'類](https://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency(v = vs .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重新啓動網站嗎?總的來說,我不想重新啓動網站(或回收appPool,不知道會發生什麼),當更改配置文件 – MrProgram

+0

@MrProgram是的,它會。總的來說,當你嘗試從'Settings'屬性中獲取設置時,它會檢查自上次讀取以來文件是否已更改。如果是這樣 - 此代碼將再次讀取設置而不會重置IIS。 –

相關問題