Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
        }