/// <summary> /// 获取标准WinForm应用程序的配置信息,合并App.config和global配置文件 /// </summary> /// <param name="machineConfigPath">global配置文件地址</param> /// <param name="localConfigPath">本地应用程序配置文件地址</param> /// <param name="ignoreFileNotExist">是否忽略不存在的文件</param> /// <param name="fileDependencies">缓存依赖文件</param> /// <returns>App.config和global配置文件合并后的Configuration对象</returns> private static System.Configuration.Configuration GetStandardExeConfiguration(string machineConfigPath, string localConfigPath, bool ignoreFileNotExist, params string[] fileDependencies) { string cacheKey = ConfigurationBroker.CreateConfigurationCacheKey(machineConfigPath, localConfigPath); System.Configuration.Configuration config; if (ConfigurationCache.Instance.TryGetValue(cacheKey, out config) == false) { ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.MachineConfigFilename = machineConfigPath; fileMap.ExeConfigFilename = localConfigPath; config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); Array.Resize <string>(ref fileDependencies, fileDependencies.Length + 2); fileDependencies[fileDependencies.Length - 2] = machineConfigPath; fileDependencies[fileDependencies.Length - 1] = localConfigPath; ConfigurationBroker.AddConfigurationToCache(cacheKey, config, ignoreFileNotExist, fileDependencies); #if DELUXEWORKSTEST // 测试使用 ConfigurationBroker.configurationReadFrom = ReadFrom.ReadFromFile; #endif } else { #if DELUXEWORKSTEST // 测试使用 ConfigurationBroker.configurationReadFrom = ReadFrom.ReadFromCache; #endif } return(config); }
/// <summary> /// 获取meta配置中的 sourceMappings 节点 /// </summary> /// <param name="fileSettings">ConfigFilesSetting 类实例</param> /// <returns>meta配置中的 sourceMappings 节点</returns> private static MetaConfigurationSourceInstanceSection GetMetaSourceInstanceSection(ConfigFilesSetting fileSettings) { ConfigurationSection section; string cacheKey = ConfigurationBroker.CreateConfigurationCacheKey(fileSettings.MachineConfigurationFile, MetaConfigurationSourceInstanceSection.Name); if (ConfigurationSectionCache.Instance.TryGetValue(cacheKey, out section) == false) { ConfigurationBroker.GetMetaFileSettings(fileSettings); if (fileSettings.MetaFilePosition == MetaConfigurationPosition.LocalFile) { section = ConfigurationBroker.LoadMetaSourceInstanceSectionFromLocal(fileSettings); } else { section = ConfigurationBroker.LoadMetaSourceInstanceSectionFromMetaFile(fileSettings); } FileCacheDependency fileDependency = new FileCacheDependency( true, fileSettings.MachineConfigurationFile, fileSettings.LocalConfigurationFile, fileSettings.MetaConfigurationFile); SlidingTimeDependency timeDependency = new SlidingTimeDependency(ConfigurationBroker.SlidingTime); ConfigurationSectionCache.Instance.Add(cacheKey, section, new MixedDependency(fileDependency, timeDependency)); } return((MetaConfigurationSourceInstanceSection)section); }
/// <summary> /// 取得单独config文件中的 Configuration /// </summary> /// <param name="fileName">文件地址</param> /// <param name="fileDependencies">缓存依赖文件</param> /// <param name="ignoreFileNotExist">是否忽略不存在的文件</param> /// <returns>Configuration对象</returns> private static System.Configuration.Configuration GetSingleFileConfiguration(string fileName, bool ignoreFileNotExist, params string[] fileDependencies) { string cacheKey = ConfigurationBroker.CreateConfigurationCacheKey(fileName); System.Configuration.Configuration config; if (ConfigurationCache.Instance.TryGetValue(cacheKey, out config) == false) { config = ConfigurationManager.OpenMappedMachineConfiguration(new ConfigurationFileMap(fileName)); Array.Resize <string>(ref fileDependencies, fileDependencies.Length + 1); fileDependencies[fileDependencies.Length - 1] = fileName; ConfigurationBroker.AddConfigurationToCache(cacheKey, config, ignoreFileNotExist, fileDependencies); } return(config); }
/// <summary> /// 获取标准Web应用程序的配置信息,合并Web.config和global配置文件 /// </summary> /// <param name="machineConfigPath">global配置文件地址</param> /// <param name="ignoreFileNotExist">是否忽略不存在的文件</param> /// <param name="fileDependencies">缓存依赖文件</param> /// <returns>Web.config和global配置文件合并后的Configuration对象</returns> private static System.Configuration.Configuration GetStandardWebConfiguration(string machineConfigPath, bool ignoreFileNotExist, params string[] fileDependencies) { string cacheKey = ConfigurationBroker.CreateConfigurationCacheKey(machineConfigPath); System.Configuration.Configuration config; if (ConfigurationCache.Instance.TryGetValue(cacheKey, out config) == false) { WebConfigurationFileMap fileMap = new WebConfigurationFileMap(); fileMap.MachineConfigFilename = machineConfigPath; VirtualDirectoryMapping vDirMap = new VirtualDirectoryMapping( HttpContext.Current.Request.PhysicalApplicationPath, true); fileMap.VirtualDirectories.Add("/", vDirMap); config = WebConfigurationManager.OpenMappedWebConfiguration(fileMap, "/", HttpContext.Current.Request.ServerVariables["INSTANCE_ID"]); Array.Resize <string>(ref fileDependencies, fileDependencies.Length + 1); fileDependencies[fileDependencies.Length - 1] = machineConfigPath; ConfigurationBroker.AddConfigurationToCache(cacheKey, config, ignoreFileNotExist, fileDependencies); #if DELUXEWORKSTEST // 测试使用 ConfigurationBroker.configurationReadFrom = ReadFrom.ReadFromFile; #endif } else { #if DELUXEWORKSTEST // 测试使用 ConfigurationBroker.configurationReadFrom = ReadFrom.ReadFromCache; #endif } return(config); }