public void CanDeserializeSerializedConfiguration()
        {
            string sourceName1 = "source1";
            string sourceName2 = "source2";
            string sourceFile1 = "file 1";
            ConfigurationSourceSection settings = new ConfigurationSourceSection();

            FileConfigurationSource.ResetImplementation(sourceFile1, false);
            ConfigurationSourceElement data1 = new FileConfigurationSourceElement(sourceName1, sourceFile1);
            ConfigurationSourceElement data2 = new SystemConfigurationSourceElement(sourceName2);

            settings.Sources.Add(data1);
            settings.Sources.Add(data2);
            settings.SelectedSource = sourceName1;
            IDictionary <string, ConfigurationSection> sections = new Dictionary <string, ConfigurationSection>();

            sections[ConfigurationSourceSection.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);
            ConfigurationSourceSection roSettigs = (ConfigurationSourceSection)configurationSource.GetSection(ConfigurationSourceSection.SectionName);

            Assert.IsNotNull(roSettigs);
            Assert.AreEqual(2, roSettigs.Sources.Count);
            Assert.AreEqual(sourceName1, roSettigs.SelectedSource);
            Assert.IsNotNull(roSettigs.Sources.Get(sourceName1));
            Assert.AreSame(typeof(FileConfigurationSourceElement), roSettigs.Sources.Get(sourceName1).GetType());
            Assert.AreEqual(sourceFile1, ((FileConfigurationSourceElement)roSettigs.Sources.Get(sourceName1)).FilePath);
            Assert.IsNotNull(roSettigs.Sources.Get(sourceName2));
            Assert.AreSame(typeof(SystemConfigurationSourceElement), roSettigs.Sources.Get(sourceName2).GetType());
        }
        ConfigurationSourceSection CreateConfigurationSourceSection()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            section.Sources.Add(new FileConfigurationSourceElement(fileSourceName, filePath));
            return(section);
        }
        protected override void Arrange()
        {
            base.Arrange();

            File.Delete(MainConfigurationFile);
            File.Delete(SatelliteConfigurationSourcePath);

            var builder = new ConfigurationSourceBuilder();

            var configurationSettings = new ConfigurationSourceSection();

            configurationSettings.SelectedSource = "System Configuration";
            configurationSettings.Sources.Add(new FileConfigurationSourceElement(SatelliteSourceName, SatelliteConfigurationSourcePath));
            configurationSettings.Sources.Add(new SystemConfigurationSourceElement("System Configuration"));
            builder.AddSection(ConfigurationSourceSection.SectionName, configurationSettings);

            builder.ConfigureCaching()
            .ForCacheManagerNamed("TestCacheManager")
            .StoreInMemory();

            var source = new DesignDictionaryConfigurationSource();

            builder.UpdateConfigurationWithReplace(source);

            ConfigurationSource = Container.Resolve <ConfigurationSourceModel>();
            ConfigurationSource.Load(source);
        }
        public void CanDeserializeSerializedConfiguration()
        {
            string sourceName1 = "source1";
            string sourceName2 = "source2";

            string sourceFile1 = "file 1";

            ConfigurationSourceSection settings = new ConfigurationSourceSection();

            ConfigurationSourceElement data1 = new FileConfigurationSourceElement(sourceName1, sourceFile1);
            ConfigurationSourceElement data2 = new SystemConfigurationSourceElement(sourceName2);

            settings.Sources.Add(data1);
            settings.Sources.Add(data2);
            settings.SelectedSource = sourceName1;

            IDictionary<string, ConfigurationSection> sections = new Dictionary<string, ConfigurationSection>();
            sections[ConfigurationSourceSection.SectionName] = settings;
            using (var configurationSource = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections))
            {
                ConfigurationSourceSection roSettigs =
                    (ConfigurationSourceSection)configurationSource.GetSection(ConfigurationSourceSection.SectionName);

                Assert.IsNotNull(roSettigs);
                Assert.AreEqual(2, roSettigs.Sources.Count);
                Assert.AreEqual(sourceName1, roSettigs.SelectedSource);

                Assert.IsNotNull(roSettigs.Sources.Get(sourceName1));
                Assert.AreSame(typeof(FileConfigurationSourceElement), roSettigs.Sources.Get(sourceName1).GetType());
                Assert.AreEqual(sourceFile1, ((FileConfigurationSourceElement)roSettigs.Sources.Get(sourceName1)).FilePath);

                Assert.IsNotNull(roSettigs.Sources.Get(sourceName2));
                Assert.AreSame(typeof(SystemConfigurationSourceElement), roSettigs.Sources.Get(sourceName2).GetType());
            }
        }
        protected override void Arrange()
        {
            base.Arrange();

            File.Delete(MainConfigurationFile);
            File.Delete(SatelliteConfigurationSourcePath);

            var builder = new ConfigurationSourceBuilder();

            var configurationSettings = new ConfigurationSourceSection();

            configurationSettings.SelectedSource = "System Configuration";
            configurationSettings.Sources.Add(new FileConfigurationSourceElement(SatelliteSourceName, SatelliteConfigurationSourcePath));
            configurationSettings.Sources.Add(new SystemConfigurationSourceElement("System Configuration"));
            builder.AddSection(ConfigurationSourceSection.SectionName, configurationSettings);

            builder.ConfigureExceptionHandling()
            .GivenPolicyWithName("policy")
            .ForExceptionType <Exception>();

            var source = new DesignDictionaryConfigurationSource();

            builder.UpdateConfigurationWithReplace(source);

            ConfigurationSource = Container.Resolve <ConfigurationSourceModel>();
            ConfigurationSource.Load(source);
        }
예제 #6
0
        public UserManagerImplementation()
        {
            // Get configuration source
            this._source = ConfigurationSourceFactory.Create(UserSettings.SectionName);

            // Load & Clone configuration (so not read-only)
            this.Load();

            // Determine configuration file path
            if (this.Source is SystemConfigurationSource)
            {
                this._filePath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
            }
            else if (this.Source is FileConfigurationSource)
            {
                ConfigurationSourceSection configurationSourceSection =
                    ConfigurationSourceSection.GetConfigurationSourceSection();

                FileConfigurationSourceElement objectConfiguration
                    = (FileConfigurationSourceElement)configurationSourceSection.Sources.Get(UserSettings.SectionName);

                FileConfigurationSourceElement e = (FileConfigurationSourceElement)objectConfiguration;
                this._filePath = objectConfiguration.FilePath;
            }
        }
예제 #7
0
        public void ConfigurationCanBeDeserialized()
        {
            ConfigurationManager.RefreshSection(ConfigurationSourceSection.SectionName);

            ConfigurationSourceSection section = (ConfigurationSourceSection)ConfigurationManager.GetSection(ConfigurationSourceSection.SectionName);

            Assert.IsNotNull(section);
            Assert.AreEqual(1, section.Sources.Count);
            ManageableConfigurationSourceElement element = section.Sources.Get(0) as ManageableConfigurationSourceElement;

            Assert.IsNotNull(element);
            Assert.AreEqual(2, element.ConfigurationManageabilityProviders.Count);
            ConfigurationSectionManageabilityProviderData data1 = element.ConfigurationManageabilityProviders.Get("section1");

            Assert.IsNotNull(data1);
            Assert.AreEqual(typeof(MockConfigurationSectionManageabilityProvider), data1.Type);
            Assert.AreEqual(3, data1.ManageabilityProviders.Count);
            ConfigurationElementManageabilityProviderData elementData11 = data1.ManageabilityProviders.Get("subProvider1");

            Assert.IsNotNull(elementData11);
            Assert.AreEqual(typeof(Object), elementData11.TargetType);
            ConfigurationSectionManageabilityProviderData data2 = element.ConfigurationManageabilityProviders.Get("section2");

            Assert.IsNotNull(data2);
            Assert.AreEqual(typeof(MockConfigurationSectionManageabilityProvider), data1.Type);
            Assert.AreEqual(0, data2.ManageabilityProviders.Count);
        }
        protected virtual ConfigurationSourceSection CreateConfigurationSourceSection()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            section.Sources.Add(new TestConfigurationSourceElement(SubordinateSource1Name));

            return(section);
        }
예제 #9
0
        protected override void Arrange()
        {
            base.Arrange();

            Mock <AssemblyLocator> assemblyLocator = new Mock <AssemblyLocator>();

            assemblyLocator.Setup(x => x.Assemblies).Returns(new Assembly[] { typeof(ManageableConfigurationSourceElement).Assembly });
            this.Container.RegisterType <ManageableConfigurationSourceViewModel>(
                new InjectionConstructor(
                    typeof(ElementCollectionViewModel),
                    typeof(ConfigurationElement),
                    new InjectionParameter <AssemblyLocator>(assemblyLocator.Object)));

            targetFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "manageableSourcetextnp.config");
            File.Create(targetFilePath).Dispose();
            File.WriteAllText(targetFilePath, "<configuration/>");

            var source = new DesignConfigurationSource(targetFilePath);

            ConfigurationSourceElement =
                new ManageableConfigurationSourceElement
            {
                Name     = "manageable",
                FilePath = "file.config",
                ConfigurationManageabilityProviders =
                {
                    new ConfigurationSectionManageabilityProviderData
                    {
                        Name     = "provider",
                        TypeName = typeof(object).AssemblyQualifiedName
                    }
                }
            };
            var section =
                new ConfigurationSourceSection
            {
                SelectedSource = "manageable",
                Sources        =
                {
                    ConfigurationSourceElement
                }
            };

            source.AddLocalSection(ConfigurationSourceSection.SectionName, section);


            var sourceModel = this.Container.Resolve <ConfigurationSourceModel>();

            sourceModel.Load(source);

            SectionViewModel =
                sourceModel.Sections.Where(x => x.ConfigurationType == typeof(ConfigurationSourceSection)).Single();

            ConfigurationSourceViewModel = SectionViewModel.GetDescendentsOfType <ManageableConfigurationSourceElement>().FirstOrDefault();
            ConfigurationSourceElement   = (ManageableConfigurationSourceElement)ConfigurationSourceViewModel.ConfigurationElement;
        }
예제 #10
0
        private void AddConfigurationSourcesToHierarchy()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            section.Sources.Add(new SystemConfigurationSourceElement("System"));
            section.Sources.Add(new FileConfigurationSourceElement("File", "app.config"));
            section.SelectedSource = "File";
            ConfigurationSourceSectionNodeBuilder builder = new ConfigurationSourceSectionNodeBuilder(ServiceProvider, section);

            ApplicationNode.AddNode(builder.Build());
        }
예제 #11
0
        private ConfigurationSourceSectionNode GetSectionNode()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            section.Sources.Add(new SystemConfigurationSourceElement("System"));
            section.Sources.Add(new FileConfigurationSourceElement("File", "app.config"));
            section.SelectedSource = "File";
            ConfigurationSourceSectionNodeBuilder builder = new ConfigurationSourceSectionNodeBuilder(ServiceProvider, section);

            return(builder.Build());
        }
        public void CanReadAndWriteConfigurationSourceSectionInformation()
        {
            RemoveSection();
            SaveSection();
            System.Configuration.Configuration config  = OpenFileConfig();
            ConfigurationSourceSection         section = (ConfigurationSourceSection)config.GetSection(ConfigurationSourceSection.SectionName);
            FileConfigurationSourceElement     elem    = (FileConfigurationSourceElement)section.Sources.Get(fileSourceName);

            Assert.AreEqual(typeof(FileConfigurationSource), elem.Type);
            Assert.AreEqual(filePath, elem.FilePath);
            RemoveSection();
        }
예제 #13
0
        public ConfigurationSourceSection Build()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            section.SelectedSource = configurationSourceSectionNode.SelectedSource.Name;
            for (int index = 0; index < configurationSourceSectionNode.Nodes.Count; ++index)
            {
                ConfigurationSourceElementNode sourceNode = (ConfigurationSourceElementNode)configurationSourceSectionNode.Nodes[index];
                section.Sources.Add(sourceNode.ConfigurationSourceElement);
            }
            return(section);
        }
예제 #14
0
        private static IDesignConfigurationSource GetSelectedConfigSource(ConfigurationSourceSection configSourceSection, IDesignConfigurationSource mainConfigurationSource)
        {
            if (configSourceSection == null)
            {
                return(null);
            }

            var selectedSource =
                configSourceSection.Sources.Where(s => s.Name == configSourceSection.SelectedSource).
                FirstOrDefault();

            return(selectedSource == null ? null : selectedSource.CreateDesignSource(mainConfigurationSource));
        }
예제 #15
0
        private static Rule GetRule(string ruleName, ConfigurationSourceSection section)
        {
            SqlConfigurationSource source = GetSelectedConfigurationSource(section);
            //get selected source
            SqlConfigurationSource selectedSource = GetSelectedConfigurationSource(section);

            SecurityConfigurationView     securityConfigurationView = new SecurityConfigurationView(selectedSource);
            AuthorizationRuleProviderData authorizationProviderData = GetAuthorizationProviderData(securityConfigurationView, source, section);

            AuthorizationRuleData authorizationRuleData = authorizationProviderData.Rules.Get(ruleName);

            return(new Rule(authorizationRuleData.Name, authorizationRuleData.Expression));
        }
예제 #16
0
        private static SqlConfigurationSource GetSelectedConfigurationSource(ConfigurationSourceSection section)
        {
            //find the selected configuration source ie system (app.config) or sql************
            string selectedSource = section.SelectedSource;
            NameTypeConfigurationElementCollection <ConfigurationSourceElement> sources = section.Sources;

            SqlConfigurationSourceElement element = GetElement(selectedSource, sources);

            return(new SqlConfigurationSource(element.ConnectionString, element.GetStoredProcedure,
                                              element.SetStoredProcedure,
                                              element.RefreshStoredProcedure, element.RemoveStoredProcedure));

            //*************************************************************
        }
예제 #17
0
        protected override void Arrange()
        {
            base.Arrange();

            sourceSection = new ConfigurationSourceSection()
            {
                ParentSource = "MissingParentSource"
            };
            var localSource = new TestConfigurationSource();

            localSource.Add(ConfigurationSourceSection.SectionName, sourceSection);
            hierarchicalConfigurationSourceHandler = new HierarchicalConfigurationSourceHandler(localSource);
            localSource.SetHierarchyHandler(hierarchicalConfigurationSourceHandler);
        }
        protected override void Arrange()
        {
            base.Arrange();

            var section = new ConfigurationSourceSection();

            section.Sources.Add(new SystemConfigurationSourceElement()
            {
                Name = "System Source"
            });

            var configSource = Container.Resolve <ConfigurationSourceModel>();

            configSourceSectionViewModel = configSource.AddSection(ConfigurationSourceSection.SectionName, section);
        }
예제 #19
0
        public static ErrorType GetErrorType(string exceptionType, string opCoCode, string policyName)
        {
            ErrorType errorType = null;

            //read the config details from file or other source (db) to find the error handling section

            //find the configuration source section
            ConfigurationSourceSection section = ConfigurationSourceSection.GetConfigurationSourceSection();

            //find the selected source where our config sections are stored
            string selectedSource = section.SelectedSource;
            NameTypeConfigurationElementCollection <ConfigurationSourceElement> sources = section.Sources;

            ConfigurationSourceElement element = sources.Get(selectedSource);

            if (element is SqlConfigurationSourceElement)
            {
                SqlConfigurationSourceElement sqlElement = element as SqlConfigurationSourceElement;

                SqlConfigurationSource configurationSource =
                    new SqlConfigurationSource(sqlElement.ConnectionString, sqlElement.GetStoredProcedure, sqlElement.SetStoredProcedure,
                                               sqlElement.RefreshStoredProcedure, sqlElement.RemoveStoredProcedure);

                //find all the exception policies
                NamedElementCollection <ExceptionPolicyData> policies =
                    ExceptionHandlingSettings.GetExceptionHandlingSettings(configurationSource).ExceptionPolicies;

                //find just the one specified
                if (policies != null)
                {
                    ExceptionPolicyData specifiedPolicy = policies.Get(policyName);

                    if (specifiedPolicy != null)
                    {
                        specifiedPolicy.ExceptionTypes.ForEach(delegate(ExceptionTypeData currentExceptionType)
                        {
                            if (currentExceptionType.Type.ToString() == exceptionType)
                            {
                                errorType = PopulateErrorType(policyName, opCoCode, currentExceptionType);
                            }
                        }

                                                               );
                    }
                }
            }
            return(errorType);
        }
예제 #20
0
        public ConfigurationSourceSection Build()
        {
            ConfigurationSourceSection section = new ConfigurationSourceSection();

            if (!configurationSourceSectionNode.RequirePermission)              // don't set if false
            {
                section.SectionInformation.RequirePermission = configurationSourceSectionNode.RequirePermission;
            }
            section.SelectedSource = configurationSourceSectionNode.SelectedSource.Name;
            for (int index = 0; index < configurationSourceSectionNode.Nodes.Count; ++index)
            {
                ConfigurationSourceElementNode sourceNode = (ConfigurationSourceElementNode)configurationSourceSectionNode.Nodes[index];
                section.Sources.Add(sourceNode.ConfigurationSourceElement);
            }
            return(section);
        }
예제 #21
0
        public void ConfigurationElementWithProvidersCanBeSerialized()
        {
            string otherConfigurationFile     = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Other.config");
            ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();

            configMap.ExeConfigFilename = otherConfigurationFile;

            File.Copy(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, otherConfigurationFile);

            try
            {
                SysConfig.Configuration rwConfiguration = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

                ConfigurationSourceSection rwConfigurationSourceSection
                    = rwConfiguration.GetSection(ConfigurationSourceSection.SectionName) as ConfigurationSourceSection;
                rwConfigurationSourceSection.Sources.Clear();

                ManageableConfigurationSourceElement rwConfigurationSourceElement
                    = new ManageableConfigurationSourceElement("manageable", otherConfigurationFile, "TestApplication");
                rwConfigurationSourceElement.ConfigurationManageabilityProviders.Add(new ConfigurationSectionManageabilityProviderData("section1", typeof(MockConfigurationSectionManageabilityProvider)));
                rwConfigurationSourceSection.Sources.Add(rwConfigurationSourceElement);

                rwConfiguration.Save();

                SysConfig.Configuration    roConfiguration = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
                ConfigurationSourceSection roConfigurationSourceSection
                    = roConfiguration.GetSection(ConfigurationSourceSection.SectionName) as ConfigurationSourceSection;
                Assert.IsNotNull(roConfigurationSourceSection);
                Assert.AreEqual(1, roConfigurationSourceSection.Sources.Count);
                ManageableConfigurationSourceElement roConfigurationSourceElement
                    = roConfigurationSourceSection.Sources.Get("manageable") as ManageableConfigurationSourceElement;
                Assert.IsNotNull(roConfigurationSourceElement);
                Assert.AreEqual(1, roConfigurationSourceElement.ConfigurationManageabilityProviders.Count);
                ConfigurationSectionManageabilityProviderData roProviderData
                    = roConfigurationSourceElement.ConfigurationManageabilityProviders.Get(0);
                Assert.AreEqual("section1", roProviderData.Name);
            }
            finally
            {
                if (File.Exists(otherConfigurationFile))
                {
                    File.Delete(otherConfigurationFile);
                }
            }
        }
예제 #22
0
        private void ChangeSourcesSection()
        {
            var sourcesSection = (ConfigurationSourceSection)RootConfiguration.GetSection(ConfigurationSourceSection.SectionName);

            var newSources = new ConfigurationSourceSection
            {
                ParentSource   = sourcesSection.ParentSource,
                SelectedSource = sourcesSection.SelectedSource
            };

            CopyData(sourcesSection.Sources, s => newSources.Sources.Add(s));
            CopyData(sourcesSection.RedirectedSections, r => newSources.RedirectedSections.Add(r));

            newSources.Sources.Get("Second Source").Name = "New Source Name";
            newSources.RedirectedSections.Get(LoggingSettings.SectionName).SourceName = "New Source Name";

            ((FileConfigurationSource)RootConfiguration).Save(ConfigurationSourceSection.SectionName, newSources);
        }
예제 #23
0
        protected virtual IConfigurationSource DoSetup()
        {
            if (source == null)
            {
                if (ConfigurationSourceFileName == null)
                {
                    source = ConfigurationSourceFactory.Create();
                }
                else
                {
                    WriteEmbeddedFileToDisk(ResourceAssembly, ConfigurationSourceFileName);

                    if (!UseMultipleSources)
                    {
                        source = new FileConfigurationSource(ConfigurationSourceFileName);
                    }
                    else
                    {
                        ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
                        fileMap.ExeConfigFilename = ConfigurationSourceFileName;

                        System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

                        // Added support for multiple sources
                        ConfigurationSourceSection configurationSourceSection
                            = configuration.GetSection(ConfigurationSourceSection.SectionName) as ConfigurationSourceSection;

                        if (configurationSourceSection != null)
                        {
                            string systemSourceName = configurationSourceSection.SelectedSource;
                            if (!string.IsNullOrEmpty(systemSourceName))
                            {
                                ConfigurationSourceElement objectConfiguration
                                    = configurationSourceSection.Sources.Get(systemSourceName);

                                source = objectConfiguration.CreateSource();
                            }
                        }
                    }
                }
            }

            return(source);
        }
예제 #24
0
        protected override void Arrange()
        {
            ConfigurationSourceSection configurationSourcesSection = CreateConfigurationSourceSection();

            MainSource = new TestConfigurationSource();
            MainSource.Add(ConfigurationSourceSection.SectionName, configurationSourcesSection);

            CompositionHandler = new TestCompositeConfigurationSourceHandler(MainSource);
            MainSource.SetCompositeHandler(CompositionHandler);

            ChildSource1 = (TestConfigurationSource)CompositionHandler["Source1"];
            ChildSource2 = (TestConfigurationSource)CompositionHandler["Source2"];

            MainSourceEventListener = new ConfigurationSourceEventListener(MainSource);

            ChildSource1.Add(SectionInChildSource1, new DummySection {
                Name = SectionInChildSource1, Value = 15
            });
        }
예제 #25
0
        protected ConfigurationSourceSection CreateConfigurationSourceSection()
        {
            ConfigurationSourceSection configurationSourcesSection = new ConfigurationSourceSection();

            configurationSourcesSection.Sources.Add(new TestConfigurationSourceElement("Source1"));
            configurationSourcesSection.Sources.Add(new TestConfigurationSourceElement("Source2"));
            configurationSourcesSection.RedirectedSections.Add(new RedirectedSectionElement
            {
                Name       = "sectionInChild1",
                SourceName = "Source1"
            });
            configurationSourcesSection.RedirectedSections.Add(new RedirectedSectionElement
            {
                Name       = "SectionInSource2",
                SourceName = "Source2"
            });

            return(configurationSourcesSection);
        }
예제 #26
0
        /// <summary>
        /// Gets all rules.
        /// </summary>
        /// <returns></returns>
        public static List <Rule> GetAllRules()
        {
            ConfigurationSourceSection section = GetConfigurationSourceSection();
            SqlConfigurationSource     source  = GetSelectedConfigurationSource(section);
            //get selected source
            SqlConfigurationSource        selectedSource            = GetSelectedConfigurationSource(section);
            SecurityConfigurationView     securityConfigurationView = new SecurityConfigurationView(selectedSource);
            AuthorizationRuleProviderData authorizationProviderData = GetAuthorizationProviderData(securityConfigurationView, source, section);

            List <Rule> rules = new List <Rule>();

            //loop through all the rules
            authorizationProviderData.Rules.ForEach(delegate(AuthorizationRuleData currentRule)
            {
                rules.Add(new Rule(currentRule.Name, currentRule.Expression));
            });

            return(rules);
        }
예제 #27
0
        /// <summary>
        /// 取webconfig中的配置
        /// </summary>
        /// <param name="SourceName"></param>
        /// <returns></returns>
        private static FileConfigurationSource GetFileConfigurationSource(string SourceName)
        {
            //获取App.config
            //Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");

            //获取资源节点集合
            ConfigurationSourceSection section =
                (ConfigurationSourceSection)config.GetSection(ConfigurationSourceSection.SectionName);

            //获取重定向配置文件资源配置节点
            FileConfigurationSourceElement elem =
                (FileConfigurationSourceElement)section.Sources.Get(SourceName);

            //获取重定向配置文件资源
            FileConfigurationSource fileSource = new FileConfigurationSource(HttpContext.Current.Server.MapPath(elem.FilePath));

            return(fileSource);
        }
예제 #28
0
        /// <summary>
        /// Updates a rule.
        /// </summary>
        /// <param name="rule">The rule.</param>
        public static void UpdateRule(Rule rule)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                ConfigurationSourceSection section = GetConfigurationSourceSection();
                //get selected source
                SqlConfigurationSource selectedSource = GetSelectedConfigurationSource(section);
                //get authorization Provider
                SecurityConfigurationView     securityConfigurationView = new SecurityConfigurationView(selectedSource);
                SecuritySettings              securitySettings          = securityConfigurationView.GetSecuritySettings();
                AuthorizationRuleProviderData authorizationProviderData = securitySettings.AuthorizationProviders.Get(
                    securityConfigurationView.GetDefaultAuthorizationProviderName()) as AuthorizationRuleProviderData;
                //add the new rule to the collection
                authorizationProviderData.Rules.Get(rule.Name).Expression = rule.Expression;

                SqlConfigurationSourceElement element = GetElement(section.SelectedSource, section.Sources);
                selectedSource.Save(element.ConnectionString, element.SetStoredProcedure, "securityConfiguration", securitySettings);
                scope.Complete();
            }
        }
        protected override void Arrange()
        {
            base.Arrange();

            ConfigurationSourceSection sourcesSection = new ConfigurationSourceSection
            {
                SelectedSource = "selected",
                ParentSource   = "parent",
                Sources        = { { new FileConfigurationSourceElement {
                                         Name = "selected"
                                     } }, { new FileConfigurationSourceElement {
                                                Name = "parent"
                                            } } }
            };

            ConfigurationSourceModel sourceModel = Container.Resolve <ConfigurationSourceModel>();

            sourceModel.AddSection(ConfigurationSourceSection.SectionName, sourcesSection);

            SourcesSectionViewModel = sourceModel.Sections.Where(x => x.SectionName == ConfigurationSourceSection.SectionName).Single();
        }
예제 #30
0
        /// <summary>
        /// Gets the a <see cref="ConfigurationSectionInfo"/> for the configuration sources.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <returns>A <see cref="ConfigurationSectionInfo"/> for the configuration for the configuration sources.</returns>
        protected override ConfigurationSectionInfo GetConfigurationSectionInfo(IServiceProvider serviceProvider)
        {
            ConfigurationNode rootNode          = ServiceHelper.GetCurrentRootNode(serviceProvider);
            ConfigurationSourceSectionNode node = null;

            if (null != rootNode)
            {
                node = (ConfigurationSourceSectionNode)rootNode.Hierarchy.FindNodeByType(rootNode, typeof(ConfigurationSourceSectionNode));
            }
            ConfigurationSourceSection sourcesSection = null;

            if (node == null)
            {
                sourcesSection = null;
            }
            else
            {
                ConfigurationSourceSectionBuilder builder = new ConfigurationSourceSectionBuilder(node);
                sourcesSection = builder.Build();;
            }
            return(new ConfigurationSectionInfo(node, sourcesSection, ConfigurationSourceSection.SectionName));
        }
        protected override void Arrange()
        {
            base.Arrange();

            targetFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "manageableSource.config");
            File.Create(targetFilePath).Dispose();
            File.WriteAllText(targetFilePath, "<configuration/>");

            var source = new DesignConfigurationSource(targetFilePath);

            var section =
                new ConfigurationSourceSection
            {
                SelectedSource = "manageable",
                Sources        =
                {
                    new ManageableConfigurationSourceElement
                    {
                        Name     = "manageable",
                        FilePath = "file.config",
                    }
                }
            };

            source.AddLocalSection(ConfigurationSourceSection.SectionName, section);


            var sourceModel = this.Container.Resolve <ConfigurationSourceModel>();

            sourceModel.Load(source);

            SectionViewModel =
                sourceModel.Sections.Where(x => x.ConfigurationType == typeof(ConfigurationSourceSection)).Single();

            ConfigurationSourceViewModel = SectionViewModel.GetDescendentsOfType <ManageableConfigurationSourceElement>().FirstOrDefault();
        }
 ConfigurationSourceSection CreateConfigurationSourceSection()
 {
     ConfigurationSourceSection section = new ConfigurationSourceSection();
     section.Sources.Add(new FileConfigurationSourceElement(fileSourceName, filePath));
     return section;
 }