///// <summary>
        ///// Override this method to create the custom default provider - in this case a database
        ///// provider with a few options.
        ///// </summary>
        protected override IConfigurationProvider OnCreateDefaultProvider(string sectionName, object configData)
        {
            string connectionString = "WestwindToolkitSamples";
            string tableName        = "ConfigurationData";

            // ConfigData: new { ConnectionString = "...", Tablename = "..." }
            if (configData != null)
            {
                dynamic data = configData;
                connectionString = data.ConnectionString;
                tableName        = data.Tablename;
            }

            var provider = new SqlServerConfigurationProvider <DatabaseConfiguration>()
            {
                Key = 0,
                ConnectionString = connectionString,
                Tablename        = tableName,
                //ProviderName = "System.Data.SqlServerCe.4.0",
                EncryptionKey       = "ultra-seekrit", // use a generated value here
                PropertiesToEncrypt = "Password,AppConnectionString"
            };

            return(provider);
        }
        ///// <summary>
        ///// Override this method to create the custom default provider - in this case a database
        ///// provider with a few options.
        ///// </summary>
        protected override IConfigurationProvider OnCreateDefaultProvider(string sectionName, object configData)
        {
            string connectionString = "WestwindToolkitSamples";
            string tableName = "ConfigurationData";

            // ConfigData: new { ConnectionString = "...", Tablename = "..." }
            if (configData != null)
            {
                dynamic data = configData;
                connectionString = data.ConnectionString;
                tableName = data.Tablename;
            }

            var provider = new SqlServerConfigurationProvider<DatabaseConfiguration>()
                {
                    Key = 0,
                    ConnectionString = connectionString,
                    Tablename = tableName,
                    //ProviderName = "System.Data.SqlServerCe.4.0",
                    EncryptionKey = "ultra-seekrit", // use a generated value here
                    PropertiesToEncrypt = "Password,AppConnectionString"
                };

            return provider;
        }
示例#3
0
        private void LoadAppConfiguration(SamplesViewModel model)
        {
            // Default Web.Config read with Constructor
            // at first access
            if (model.ConfigTypeSelection == "Default Web.Config")
            {
                // Simply assign the default config object - it gets loaded via
                // the default constructor defined in AppConfig.cs
                this.AppConfig = App.Configuration;

                // force to re-read in case we updated previously
                AppConfig.Read();
            }


            // Explicit object creation for the remaining objects,
            // but you can use the same static constructor approach
            // as with the above

            // Separate Web.Config Section
            else if (model.ConfigTypeSelection == "Different Web.Config Section")
            {
                var provider = new ConfigurationFileConfigurationProvider <ApplicationConfiguration>()
                {
                    ConfigurationSection = "WebStoreConfiguration",
                    PropertiesToEncrypt  = "ConnectionString,MailServerPassword",
                    EncryptionKey        = STR_SUPERSECRET
                };
                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }

            // Separate Web.AppConfig Section
            else if (model.ConfigTypeSelection == "Different .Config File")
            {
                var provider = new ConfigurationFileConfigurationProvider <ApplicationConfiguration>()
                {
                    ConfigurationFile    = Server.MapPath("~/WebStore.config"),
                    ConfigurationSection = "WebStoreConfiguration",
                    PropertiesToEncrypt  = "ConnectionString,MailServerPassword",
                    EncryptionKey        = STR_SUPERSECRET
                };

                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }

            else if (model.ConfigTypeSelection == "Simple Xml File")
            {
                var provider = new XmlFileConfigurationProvider <ApplicationConfiguration>()
                {
                    XmlConfigurationFile = Server.MapPath("WebStoreConfig.xml"),
                    PropertiesToEncrypt  = "ConnectionString,MailServerPassword",
                    EncryptionKey        = STR_SUPERSECRET
                };

                this.AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }
            else if (model.ConfigTypeSelection == "String")
            {
                string XmlString = HttpContext.Application["XmlString"] as string;
                AppConfig = new ApplicationConfiguration();

                if (XmlString != null)
                {
                    // You can always read from an XML Serialization string w/o
                    // any provider setup
                    AppConfig.Read(XmlString);
                }
            }

            // Not implemented since you will need a database
            // this example uses the connection string configured in the Web.Config
            else if (model.ConfigTypeSelection == "Database")
            {
                var provider = new SqlServerConfigurationProvider <ApplicationConfiguration>()
                {
                    ConnectionString = "DevSampleConnectionString",
                    Tablename        = "ConfigData",
                    Key = 1,
                    PropertiesToEncrypt = "ConnectionString,MailServerPassword",
                    EncryptionKey       = STR_SUPERSECRET
                };

                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);

                if (!this.AppConfig.Read())
                {
                    model.ShowError(
                        "Unable to connect to the Database.<hr>" +
                        "This database samle uses the connection string in the configuration settings " +
                        "with a table named 'ConfigData' and a field named 'ConfigData' to hold the " +
                        "configuration settings. If you have a valid connection string you can click " +
                        "on Save Settings to force the table and a single record to be created.<br><br>" +
                        "Note: The table name is parameterized (and you can change it in the default.aspx.cs page), but the field name always defaults to ConfigData.<hr/>" +
                        AppConfig.ErrorMessage);
                }
            }
        }
        private void LoadAppConfiguration(SamplesViewModel model)
        {            
           
            // Default Web.Config read with Constructor
            // at first access
            if (model.ConfigTypeSelection == "Default Web.Config")
            {
                // Simply assign the default config object - it gets loaded via 
                // the default constructor defined in AppConfig.cs
                this.AppConfig = App.Configuration;
                
                // force to re-read in case we updated previously
                AppConfig.Read();
            }
            

            // Explicit object creation for the remaining objects, 
            // but you can use the same static constructor approach
            // as with the above

            // Separate Web.Config Section
            else if (model.ConfigTypeSelection == "Different Web.Config Section")
            {
                var provider = new ConfigurationFileConfigurationProvider<ApplicationConfiguration>()
                {
                     ConfigurationSection = "WebStoreConfiguration",
                     PropertiesToEncrypt = "ConnectionString,MailServerPassword", 
                     EncryptionKey = STR_SUPERSECRET
                };
                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }

                // Separate Web.AppConfig Section
            else if (model.ConfigTypeSelection == "Different .Config File")
            {
                
                var provider = new ConfigurationFileConfigurationProvider<ApplicationConfiguration>()
                {
                    ConfigurationFile= Server.MapPath("~/WebStore.config"),
                    ConfigurationSection = "WebStoreConfiguration",
                    PropertiesToEncrypt = "ConnectionString,MailServerPassword",
                    EncryptionKey = STR_SUPERSECRET
                };

                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }

            else if (model.ConfigTypeSelection == "Simple Xml File")
            {
                var provider = new XmlFileConfigurationProvider<ApplicationConfiguration>()
                {
                    XmlConfigurationFile = Server.MapPath("WebStoreConfig.xml"),
                    PropertiesToEncrypt = "ConnectionString,MailServerPassword",
                    EncryptionKey = STR_SUPERSECRET
                };

                this.AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);
                //this.AppConfig.Read();
            }
            else if (model.ConfigTypeSelection == "String")
            {

                string XmlString = HttpContext.Application["XmlString"] as string;
                AppConfig = new ApplicationConfiguration();

                if (XmlString != null)
                {
                    // You can always read from an XML Serialization string w/o
                    // any provider setup
                    AppConfig.Read(XmlString);
                }
            }

            // Not implemented since you will need a database
            // this example uses the connection string configured in the Web.Config
            else if (model.ConfigTypeSelection == "Database")
            {
                var provider = new SqlServerConfigurationProvider<ApplicationConfiguration>()
                {
                    ConnectionString = "DevSampleConnectionString",
                    Tablename = "ConfigData",
                    Key = 1,
                    PropertiesToEncrypt = "ConnectionString,MailServerPassword",
                    EncryptionKey = STR_SUPERSECRET
                };

                AppConfig = new ApplicationConfiguration();
                AppConfig.Initialize(provider);

                if (!this.AppConfig.Read())
                    model.ShowError(
                      "Unable to connect to the Database.<hr>" +
                      "This database samle uses the connection string in the configuration settings " +
                      "with a table named 'ConfigData' and a field named 'ConfigData' to hold the " +
                      "configuration settings. If you have a valid connection string you can click " +
                      "on Save Settings to force the table and a single record to be created.<br><br>" +
                      "Note: The table name is parameterized (and you can change it in the default.aspx.cs page), but the field name always defaults to ConfigData.<hr/>" +
                      AppConfig.ErrorMessage);
            }
        }