private static void ValidateDuplicates(ModulesConfigurationSection section) { foreach (ModuleConfigurationElement data in section.Modules) { ICollection<ModuleConfigurationElement> found = section.Modules.FindAll(delegate(ModuleConfigurationElement match) { return !string.IsNullOrEmpty(match.VirtualPath) && (String.Equals(match.VirtualPath, data.VirtualPath, StringComparison. InvariantCultureIgnoreCase) || String.Equals(match.AssemblyName, data.AssemblyName, StringComparison. InvariantCultureIgnoreCase)); }); if (found.Count > 1) ThrowConfigurationErrorsException(found); } }
public ModulesConfigurationSection GetModuleConfigurationSection() { ModulesConfigurationSection globalSection = new ModulesConfigurationSection(); PopulateSection(globalSection, _baseDirectory, true); return globalSection; }
private ModulesConfigurationSection ParseSection(string filePath) { ModulesConfigurationSection section = new ModulesConfigurationSection(); XmlDocument config = new XmlDocument(); config.Load(filePath); XmlNodeList moduleList = config.SelectNodes(XpathCompositeWebModuleNode); if (moduleList == null || moduleList.Count == 0) { XmlNamespaceManager nsmgr = new XmlNamespaceManager(config.NameTable); nsmgr.AddNamespace(QualifierXpath, NetConfigurationNamespace); moduleList = config.SelectNodes(QualifiedXpathCompositeWebModuleNode, nsmgr); } foreach (XmlNode module in moduleList) { string name = module.Attributes[NameAttribute].Value; string assemblyName = module.Attributes[AssemblyNameAttribute].Value; string virtualPath = null; if (module.Attributes[VirtualPathAttribute] != null) { virtualPath = module.Attributes[VirtualPathAttribute].Value; } ModuleConfigurationElement data = new ModuleConfigurationElement(name, assemblyName, virtualPath); section.Modules.Add(data); } return section; }
private void PopulateSection(ModulesConfigurationSection section, string rootDirectory, bool recursive) { foreach (string fileName in Directory.GetFiles(rootDirectory, "Web.Config", SearchOption.TopDirectoryOnly)) { ModulesConfigurationSection localSection = ParseSection(Path.Combine(rootDirectory, fileName)); if (localSection != null) { foreach (ModuleConfigurationElement module in localSection.Modules) { if (!section.Modules.Contains(module.Name)) { section.Modules.Add(module); } } } } if (recursive) { foreach (string childDirectory in Directory.GetDirectories(rootDirectory)) { PopulateSection(section, childDirectory, recursive); } } }
private void PopulateSection(ModulesConfigurationSection section, string rootDirectory) { foreach (string fileName in Directory.GetFiles(rootDirectory, "Web.Config", SearchOption.TopDirectoryOnly)) { System.Configuration.Configuration configuration = GetConfiguration(Path.Combine(rootDirectory, fileName)); ModulesConfigurationSection localSection = (ModulesConfigurationSection) configuration.GetSection("compositeWeb/modules"); if (localSection != null) { foreach (ModuleConfigurationElement module in localSection.Modules) { if (!section.Modules.Contains(module.Name)) { section.Modules.Add(module); } } } } foreach (string childDirectory in Directory.GetDirectories(rootDirectory)) { PopulateSection(section, childDirectory); } }