2016-12-29 132 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。 –

相关问题