Leggi in inglese

Condividi tramite


Configuration Classe

Definizione

Rappresenta un file di configurazione applicabile a un'applicazione, a una risorsa o a un computer specifico. La classe non può essere ereditata.

C#
public sealed class Configuration
Ereditarietà
Configuration

Esempio

Nell'esempio di codice seguente viene illustrato come usare la Configuration classe per accedere agli elementi del file di configurazione.

C#
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Globalization;
using System.ComponentModel;
using System.Collections.Specialized;

// Before compiling this application, 
// remember to reference the System.Configuration assembly in your project. 
#region CustomSection class

// Define a custom section. This class is used to
// populate the configuration file.
// It creates the following custom section:
//  <CustomSection name="Contoso" url="http://www.contoso.com" port="8080" />.
public sealed class CustomSection : ConfigurationSection
{

    public CustomSection()
    {
    }

    [ConfigurationProperty("name",
     DefaultValue = "Contoso",
     IsRequired = true,
     IsKey = true)]
    public string Name
    {
        get
        {
            return (string)this["name"];
        }
        set
        {
            this["name"] = value;
        }
    }

    [ConfigurationProperty("url",
        DefaultValue = "http://www.contoso.com",
        IsRequired = true)]
    [RegexStringValidator(@"\w+:\/\/[\w.]+\S*")]
    public string Url
    {
        get
        {
            return (string)this["url"];
        }
        set
        {
            this["url"] = value;
        }
    }

    [ConfigurationProperty("port",
        DefaultValue = (int)8080,
        IsRequired = false)]
    [IntegerValidator(MinValue = 0,
        MaxValue = 8080, ExcludeRange = false)]
    public int Port
    {
        get
        {
            return (int)this["port"];
        }
        set
        {
            this["port"] = value;
        }
    }
}

#endregion

#region Using Configuration Class
class UsingConfigurationClass
{


    // Show how to create an instance of the Configuration class
    // that represents this application configuration file.  
    static void CreateConfigurationFile()
    {
        try
        {

            // Create a custom configuration section.
            CustomSection customSection = new CustomSection();

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            // Create the custom section entry  
            // in <configSections> group and the 
            // related target section in <configuration>.
            if (config.Sections["CustomSection"] == null)
            {
                config.Sections.Add("CustomSection", customSection);
            }

            // Create and add an entry to appSettings section.
            
            string conStringname="LocalSqlServer";
            string conString = @"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true";
            string providerName="System.Data.SqlClient";

            ConnectionStringSettings connStrSettings = new ConnectionStringSettings();
            connStrSettings.Name = conStringname;
            connStrSettings.ConnectionString= conString;
            connStrSettings.ProviderName = providerName;

            config.ConnectionStrings.ConnectionStrings.Add(connStrSettings);
            
            // Add an entry to appSettings section.
            int appStgCnt =
                ConfigurationManager.AppSettings.Count;
            string newKey = "NewKey" + appStgCnt.ToString();

            string newValue = DateTime.Now.ToLongDateString() +
              " " + DateTime.Now.ToLongTimeString();

            config.AppSettings.Settings.Add(newKey, newValue);

            // Save the configuration file.
            customSection.SectionInformation.ForceSave = true;
            config.Save(ConfigurationSaveMode.Full);

            Console.WriteLine("Created configuration file: {0}",
                config.FilePath);
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("CreateConfigurationFile: {0}", err.ToString());
        }
    }

    // Show how to use the GetSection(string) method.
    static void GetCustomSection()
    {
        try
        {

            CustomSection customSection;

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            customSection =
                config.GetSection("CustomSection") as CustomSection;

            Console.WriteLine("Section name: {0}", customSection.Name);
            Console.WriteLine("Url: {0}", customSection.Url);
            Console.WriteLine("Port: {0}", customSection.Port);
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("Using GetSection(string): {0}", err.ToString());
        }
    }


    // Show how to use different modalities to save 
    // a configuration file.
    static void SaveConfigurationFile()
    {
        try
        {

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Save the full configuration file and force save even if the file was not modified.
            config.SaveAs("MyConfigFull.config", ConfigurationSaveMode.Full, true);
            Console.WriteLine("Saved config file as MyConfigFull.config using the mode: {0}",
                ConfigurationSaveMode.Full.ToString());

            config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Save only the part of the configuration file that was modified. 
            config.SaveAs("MyConfigModified.config", ConfigurationSaveMode.Modified, true);
            Console.WriteLine("Saved config file as MyConfigModified.config using the mode: {0}",
                ConfigurationSaveMode.Modified.ToString());

            config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Save the full configuration file.
            config.SaveAs("MyConfigMinimal.config");
            Console.WriteLine("Saved config file as MyConfigMinimal.config using the mode: {0}",
                ConfigurationSaveMode.Minimal.ToString());
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("SaveConfigurationFile: {0}", err.ToString());
        }
    }

    // Show how use the AppSettings and ConnectionStrings 
    // properties.
    static void GetSections(string section)
    {
        try
        {

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            // Get the selected section.
            switch (section)
            {
                case "appSettings":
                    try
                    {
                        AppSettingsSection appSettings =
                            config.AppSettings as AppSettingsSection;
                        Console.WriteLine("Section name: {0}",
                                appSettings.SectionInformation.SectionName);

                        // Get the AppSettings section elements.
                        Console.WriteLine();
                        Console.WriteLine("Using AppSettings property.");
                        Console.WriteLine("Application settings:");
                        // Get the KeyValueConfigurationCollection 
                        // from the configuration.
                        KeyValueConfigurationCollection settings =
                          config.AppSettings.Settings;

                        // Display each KeyValueConfigurationElement.
                        foreach (KeyValueConfigurationElement keyValueElement in settings)
                        {
                            Console.WriteLine("Key: {0}", keyValueElement.Key);
                            Console.WriteLine("Value: {0}", keyValueElement.Value);
                            Console.WriteLine();
                        }
                    }
                    catch (ConfigurationErrorsException e)
                    {
                        Console.WriteLine("Using AppSettings property: {0}",
                            e.ToString());
                    }
                    break;

                case "connectionStrings":
                    ConnectionStringsSection
                        conStrSection =
                        config.ConnectionStrings as ConnectionStringsSection;
                    Console.WriteLine("Section name: {0}",
                        conStrSection.SectionInformation.SectionName);

                    try
                    {
                        if (conStrSection.ConnectionStrings.Count != 0)
                        {
                            Console.WriteLine();
                            Console.WriteLine("Using ConnectionStrings property.");
                            Console.WriteLine("Connection strings:");

                            // Get the collection elements.
                            foreach (ConnectionStringSettings connection in
                              conStrSection.ConnectionStrings)
                            {
                                string name = connection.Name;
                                string provider = connection.ProviderName;
                                string connectionString = connection.ConnectionString;

                                Console.WriteLine("Name:               {0}",
                                  name);
                                Console.WriteLine("Connection string:  {0}",
                                  connectionString);
                                Console.WriteLine("Provider:            {0}",
                                   provider);
                            }
                        }
                    }
                    catch (ConfigurationErrorsException e)
                    {
                        Console.WriteLine("Using ConnectionStrings property: {0}",
                            e.ToString());
                    }
                    break;

                default:
                    Console.WriteLine(
                        "GetSections: Unknown section (0)", section);
                    break;
            }
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("GetSections: (0)", err.ToString());
        }
    }

    // Show how to use the Configuration object properties 
    // to obtain configuration file information.
    static void GetConfigurationInformation()
    {
        try
        {

            // Get the current configuration file.
            System.Configuration.Configuration config =
                    ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None) as Configuration;

            Console.WriteLine("Reading configuration information:");

            ContextInformation evalContext =
                config.EvaluationContext as ContextInformation;
            Console.WriteLine("Machine level: {0}",
                evalContext.IsMachineLevel.ToString());
                    
            string filePath = config.FilePath;
            Console.WriteLine("File path: {0}", filePath);
             
            bool hasFile = config.HasFile;
            Console.WriteLine("Has file: {0}", hasFile.ToString());

            ConfigurationSectionGroupCollection
                groups = config.SectionGroups;
            Console.WriteLine("Groups: {0}", groups.Count.ToString());
            foreach (ConfigurationSectionGroup group in groups)
            {
                Console.WriteLine("Group Name: {0}", group.Name);
               // Console.WriteLine("Group Type: {0}", group.Type);
            }

            ConfigurationSectionCollection
                sections = config.Sections;
            Console.WriteLine("Sections: {0}", sections.Count.ToString());
        }
        catch (ConfigurationErrorsException err)
        {
            Console.WriteLine("GetConfigurationInformation: {0}",err.ToString());
        }
    }

#endregion 

#region Application Main
    //*** User Interaction Class ***//

    // Obtain user's input and provide feedback.
    // This class contains the application Main() function.
    // It calls the ConfigurationManager methods based 
    // on the user's selection.
    class ApplicationMain
    {
        // Display user's menu.
        public static void UserMenu()
        {
            string applicationName =
                Environment.GetCommandLineArgs()[0] + ".exe";
            StringBuilder buffer = new StringBuilder();

            buffer.AppendLine("Application: " + applicationName);
            buffer.AppendLine("Make your selection.");
            buffer.AppendLine("?    -- Display help.");
            buffer.AppendLine("Q,q  -- Exit the application.");
            
            buffer.Append("1    -- Instantiate the");
            buffer.AppendLine(" Configuration class.");

            buffer.Append("2    -- Use GetSection(string) to read ");
            buffer.AppendLine(" a custom section.");
            
            buffer.Append("3    -- Use SaveAs methods");
            buffer.AppendLine(" to save the configuration file.");

            buffer.Append("4    -- Use AppSettings property to read");
            buffer.AppendLine(" the appSettings section.");
            buffer.Append("5    -- Use ConnectionStrings property to read");
            buffer.AppendLine(" the connectionStrings section.");

            buffer.Append("6    -- Use Configuration class properties");
            buffer.AppendLine(" to obtain configuration information.");

            Console.Write(buffer.ToString());
        }

        // Obtain user's input and provide
        // feedback.
        static void Main(string[] args)
        {
            // Define user selection string.
            string selection;

            // Get the name of the application.
            string appName =
                Environment.GetCommandLineArgs()[0];

            // Get user selection.
            while (true)
            {

                UserMenu();
                Console.Write("> ");
                selection = Console.ReadLine();
                if (!string.IsNullOrEmpty(selection))
                    break;
            }

            while (selection.ToLower() != "q")
            {
                // Process user's input.
                switch (selection)
                {
                    case "1":
                        // Show how to create an instance of the Configuration class.
                        CreateConfigurationFile();
                        break;

                    case "2":
                        // Show how to use GetSection(string) method.
                        GetCustomSection();
                        break;

                    case "3":
                        // Show how to use ConnectionStrings.
                        SaveConfigurationFile();
                        break;

                    case "4":
                        // Show how to use the AppSettings property.
                        GetSections("appSettings");
                        break;

                    case "5":
                        // Show how to use the ConnectionStrings property.
                        GetSections("connectionStrings");
                        break;

                    case "6":
                        // Show how to obtain configuration file information.
                        GetConfigurationInformation();
                        break;

                    default:
                        UserMenu();
                        break;
                }
                Console.Write("> ");
                selection = Console.ReadLine();
            }
        }
    }
#endregion

}

Commenti

Le impostazioni di configurazione vengono archiviate in una gerarchia di file di configurazione. L'istanza Configuration della classe rappresenta la visualizzazione unita delle impostazioni di configurazione da tutti i file di configurazione che si applicano a un'entità fisica specifica, ad esempio un computer o a un'entità logica, ad esempio un'applicazione o un sito Web. L'entità logica può esistere nel computer locale o in un server remoto. Per informazioni sui file di configurazione, vedere Configurazione di app e ASP.NET file di configurazione.

Quando non esiste alcun file di configurazione per un'entità specificata, l'oggetto Configuration rappresenta le impostazioni di configurazione predefinite definite dal file Machine.config.

È possibile ottenere un Configuration oggetto usando le classi seguenti:

I nomi dei metodi che restituiscono un Configuration oggetto iniziano con "Apri".

È anche possibile generare un file di configurazione che rappresenta le impostazioni di configurazione in un Configuration oggetto. A tale scopo, adottare uno dei metodi seguenti:

  • Chiamare il Save metodo per creare un nuovo file di configurazione.

  • Chiamare il SaveAs metodo per generare un nuovo file di configurazione in un'altra posizione.

I nomi dei metodi che creano file di configurazione iniziano con "Salva".

Nota

Per abilitare l'accesso alle impostazioni di configurazione in un computer remoto, usare lo strumento da riga di comando Aspnet_regiis. Per altre informazioni su questo strumento, vedere ASP.NET IIS Registration Tool (Aspnet_regiis.exe). Per informazioni sulla creazione e l'accesso alle impostazioni di configurazione personalizzate diverse dalle sezioni intrinseche incluse in .NET Framework, vedere ConfigurationSection.

Note per gli eredi

La classe fornisce l'accesso Configuration a livello di codice per la modifica dei file di configurazione. Si usa uno dei metodi "Open" forniti dalla classe per le applicazioni Web o dalla WebConfigurationManagerConfigurationManager classe per le applicazioni client. Questi metodi restituiscono un Configuration oggetto, che a sua volta fornisce i metodi e le proprietà che gestiscono i file di configurazione sottostanti. È possibile accedere a questi file per leggere o scrivere informazioni di configurazione.

Usare il metodo o il GetSection(String)GetSectionGroup(String) metodo per leggere le informazioni di configurazione. Si noti che l'utente o il processo che legge devono avere le autorizzazioni seguenti:

  • Autorizzazione di lettura per il file di configurazione a livello di gerarchia di configurazione corrente.

  • Autorizzazioni di lettura per tutti i file di configurazione padre.

Se l'applicazione richiede l'accesso in sola lettura alla propria configurazione, è consigliabile usare gli overload del GetSection metodo per le applicazioni Web. Per l'applicazione client, usare il GetSection(String) metodo .

Questi metodi forniscono l'accesso ai valori di configurazione memorizzati nella cache per l'applicazione corrente, con prestazioni migliori rispetto alla Configuration classe.

Nota: se si usa un metodo statico GetSection che accetta un parametro di percorso, il parametro path deve fare riferimento all'applicazione in cui è in esecuzione il codice, altrimenti il parametro viene ignorato e le informazioni di configurazione per l'applicazione attualmente in esecuzione vengono restituite.

Si usa uno dei metodi per scrivere informazioni di Save configurazione. Si noti che l'utente o il processo che scrive deve disporre delle autorizzazioni seguenti:

  • Autorizzazione di scrittura per il file di configurazione e la directory a livello di gerarchia di configurazione corrente.

  • Autorizzazioni di lettura per tutti i file di configurazione.

Proprietà

AppSettings

Ottiene la sezione di configurazione dell'oggetto AppSettingsSection valida per questo oggetto Configuration.

AssemblyStringTransformer

Specifica un delegato di funzione utilizzato per trasformare stringhe dell'assembly in file di configurazione.

ConnectionStrings

Ottiene un oggetto sezione di configurazione ConnectionStringsSection valido per questo oggetto Configuration.

EvaluationContext

Ottiene l'oggetto ContextInformation per l'oggetto Configuration.

FilePath

Ottiene il percorso fisico del file di configurazione rappresentato da questo oggetto Configuration.

HasFile

Ottiene un valore che indica se esiste un file per la risorsa rappresentata da questo oggetto Configuration.

Locations

Ottiene le posizioni definite in questo oggetto Configuration.

NamespaceDeclared

Ottiene o imposta un valore che indica se il file di configurazione ha uno spazio dei nomi XML.

RootSectionGroup

Ottiene l'oggetto ConfigurationSectionGroup di primo livello di questo oggetto Configuration.

SectionGroups

Ottiene un insieme dei gruppi di sezioni definiti da questa configurazione.

Sections

Ottiene un insieme di sezioni definite dall'oggetto Configuration.

TargetFramework

Ottiene o imposta la versione di destinazione di .NET quando viene usata come destinazione una versione precedente rispetto a quella corrente.

TypeStringTransformer

Specifica un delegato di funzione utilizzato per trasformare stringhe di tipi in file di configurazione.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetSection(String)

Restituisce l'oggetto ConfigurationSection specificato.

GetSectionGroup(String)

Ottiene l'oggetto ConfigurationSectionGroup specificato.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Save()

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML corrente.

Save(ConfigurationSaveMode, Boolean)

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML corrente.

Save(ConfigurationSaveMode)

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML corrente.

SaveAs(String, ConfigurationSaveMode, Boolean)

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML specificato.

SaveAs(String, ConfigurationSaveMode)

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML specificato.

SaveAs(String)

Scrive le impostazioni di configurazione contenute in questo oggetto Configuration nel file di configurazione XML specificato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Prodotto Versioni
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Vedi anche