ConfigurationManager Classe

Definizione

Fornisce l'accesso ai file di configurazione per le applicazioni client.Provides access to configuration files for client applications. Questa classe non può essere ereditata.This class cannot be inherited.

public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
Ereditarietà
ConfigurationManager

Esempio

Nel primo esempio viene illustrata una semplice applicazione console che legge le impostazioni dell'applicazione, aggiunge una nuova impostazione e aggiorna un'impostazione esistente.The first example shows a simple console application that reads application settings, adds a new setting, and updates an existing setting.

using System;  
using System.Configuration;  
  
namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadAllSettings();  
            ReadSetting("Setting1");  
            ReadSetting("NotValid");  
            AddUpdateAppSettings("NewSetting", "May 7, 2014");  
            AddUpdateAppSettings("Setting1", "May 8, 2014");  
            ReadAllSettings();  
        }  
  
        static void ReadAllSettings()  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
  
                if (appSettings.Count == 0)  
                {  
                    Console.WriteLine("AppSettings is empty.");  
                }  
                else  
                {  
                    foreach (var key in appSettings.AllKeys)  
                    {  
                        Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);  
                    }  
                }  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  
  
        static void ReadSetting(string key)  
        {  
            try  
            {  
                var appSettings = ConfigurationManager.AppSettings;  
                string result = appSettings[key] ?? "Not Found";  
                Console.WriteLine(result);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error reading app settings");  
            }  
        }  
  
        static void AddUpdateAppSettings(string key, string value)  
        {  
            try  
            {  
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  
                var settings = configFile.AppSettings.Settings;  
                if (settings[key] == null)  
                {  
                    settings.Add(key, value);  
                }  
                else  
                {  
                    settings[key].Value = value;  
                }  
                configFile.Save(ConfigurationSaveMode.Modified);  
                ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);  
            }  
            catch (ConfigurationErrorsException)  
            {  
                Console.WriteLine("Error writing app settings");  
            }  
        }  
    }  
}  
Imports System.Configuration  
Module Module1  
  
    Sub Main()  
        ReadAllSettings()  
        ReadSetting("Setting1")  
        ReadSetting("NotValid")  
        AddUpdateAppSettings("NewSetting", "May 7, 2014")  
        AddUpdateAppSettings("Setting1", "May 8, 2014")  
        ReadAllSettings()  
    End Sub  
  
    Sub ReadAllSettings()  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
  
            If appSettings.Count = 0 Then  
                Console.WriteLine("AppSettings is empty.")  
            Else  
                For Each key As String In appSettings.AllKeys  
                    Console.WriteLine("Key: {0} Value: {1}", key, appSettings(key))  
                Next  
            End If  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  
  
    Sub ReadSetting(key As String)  
        Try  
            Dim appSettings = ConfigurationManager.AppSettings  
            Dim result As String = appSettings(key)  
            If IsNothing(result) Then  
                result = "Not found"  
            End If  
            Console.WriteLine(result)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error reading app settings")  
        End Try  
    End Sub  
  
    Sub AddUpdateAppSettings(key As String, value As String)  
        Try  
            Dim configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)  
            Dim settings = configFile.AppSettings.Settings  
            If IsNothing(settings(key)) Then  
                settings.Add(key, value)  
            Else  
                settings(key).Value = value  
            End If  
            configFile.Save(ConfigurationSaveMode.Modified)  
            ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name)  
        Catch e As ConfigurationErrorsException  
            Console.WriteLine("Error writing app settings")  
        End Try  
    End Sub  
  
End Module  

Nell'esempio precedente si presuppone che il progetto includa un file app. config, come illustrato di seguito.The previous example assumes your project has an App.config file as shown below.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
  <appSettings>  
    <add key="Setting1" value="May 5, 2014"/>  
    <add key="Setting2" value="May 6, 2014"/>  
  </appSettings>  
</configuration>  

Nell'esempio seguente viene illustrato come utilizzare una stringa di connessione per leggere i dati da un database.The following example shows how to use a connection string to read data from a database.

using System;  
using System.Configuration;  
using System.Data.SqlClient;  
  
namespace ConsoleApplication1  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            ReadProducts();  
        }  
  
        static void ReadProducts()  
        {  
            var connectionString = ConfigurationManager.ConnectionStrings["WingtipToys"].ConnectionString;  
            string queryString = "SELECT Id, ProductName FROM dbo.Products;";  
            using (var connection = new SqlConnection(connectionString))  
            {  
                var command = new SqlCommand(queryString, connection);  
                connection.Open();  
                using (var reader = command.ExecuteReader())  
                {  
                    while (reader.Read())  
                    {  
                        Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));  
                    }  
                }  
            }  
        }  
    }  
}  
Imports System.Configuration  
Imports System.Data.SqlClient  
Module Module1  
  
    Sub Main()  
        ReadProducts()  
    End Sub  
  
    Sub ReadProducts()  
        Dim connectionString = ConfigurationManager.ConnectionStrings("WingtipToys").ConnectionString  
        Dim queryString = "SELECT Id, ProductName FROM dbo.Products;"  
        Using connection As New SqlConnection(connectionString)  
            Dim command = New SqlCommand(queryString, connection)  
            connection.Open()  
  
            Using reader As SqlDataReader = command.ExecuteReader()  
                While reader.Read()  
                    Console.WriteLine(String.Format("{0}, {1}", reader(0), reader(1)))  
                End While  
            End Using  
        End Using  
    End Sub  
  
End Module  

Nell'esempio precedente si presuppone che il progetto disponga di un file app. config, come illustrato di seguito.The previous example assumes your project has an App.config as shown below.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
    <startup>   
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />  
    </startup>  
    <connectionStrings>  
      <add name="WingtipToys" connectionString="Data Source=(LocalDB)\v11.0;Initial Catalog=WingtipToys;Integrated Security=True;Pooling=False" />  
    </connectionStrings>  
</configuration>  

Commenti

La classe ConfigurationManager consente di accedere alle informazioni di configurazione del computer, dell'applicazione e dell'utente.The ConfigurationManager class enables you to access machine, application, and user configuration information. Questa classe sostituisce la classe ConfigurationSettings, che è deprecata.This class replaces the ConfigurationSettings class, which is deprecated. Per le applicazioni Web, usare la classe WebConfigurationManager.For web applications, use the WebConfigurationManager class.

Per usare la classe ConfigurationManager, il progetto deve fare riferimento all'assembly System.Configuration.To use the ConfigurationManager class, your project must reference the System.Configuration assembly. Per impostazione predefinita, alcuni modelli di progetto, come applicazione console, non fanno riferimento a questo assembly, pertanto è necessario farvi riferimento manualmente.By default, some project templates, like Console Application, do not reference this assembly so you must manually reference it.

Nota

Il nome e il percorso del file di configurazione dell'applicazione dipendono dall'host dell'applicazione.The name and location of the application configuration file depend on the application's host. Per altre informazioni, vedere configurazione di app tramite file di configurazione.For more information, see Configuring Apps by using Configuration Files.

Per gestire le informazioni di configurazione, è possibile usare i tipi di System.Configuration predefiniti o derivare da essi.You can use the built-in System.Configuration types or derive from them to handle configuration information. Utilizzando questi tipi, è possibile utilizzare direttamente le informazioni di configurazione ed è possibile estendere i file di configurazione per includere informazioni personalizzate.By using these types, you can work directly with configuration information and you can extend configuration files to include custom information.

La classe ConfigurationManager include membri che consentono di eseguire le attività seguenti:The ConfigurationManager class includes members that enable you to perform the following tasks:

  • Leggere una sezione da un file di configurazione.Read a section from a configuration file. Per accedere alle informazioni di configurazione, chiamare il metodo GetSection.To access configuration information, call the GetSection method. Per alcune sezioni, ad esempio appSettings e connectionStrings, usare le classi AppSettings e ConnectionStrings.For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. Questi membri eseguono operazioni di sola lettura, usano una singola istanza memorizzata nella cache della configurazione e sono compatibili con multithread.These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware.

  • Leggere e scrivere i file di configurazione nel suo complesso.Read and write configuration files as a whole. L'applicazione può leggere e scrivere le impostazioni di configurazione a qualsiasi livello, per se stessa o per altre applicazioni o computer, localmente o in remoto.Your application can read and write configuration settings at any level, for itself or for other applications or computers, locally or remotely. Usare uno dei metodi forniti dalla classe ConfigurationManager per aprire un file di configurazione, ad esempio SampleApp. exe. config. Questi metodi restituiscono un oggetto Configuration che a sua volta espone metodi e proprietà che è possibile usare per lavorare con i file di configurazione associati.Use one of the methods provided by the ConfigurationManager class to open a configuration file such as SampleApp.exe.config. These methods return a Configuration object that in turn exposes methods and properties you can use to work with the associated configuration files. I metodi eseguono le operazioni di lettura o scrittura e creano i dati di configurazione ogni volta che un file viene scritto.The methods perform read or write operations and create the configuration data every time that a file is written.

  • Supportare le attività di configurazione.Support configuration tasks. Per supportare diverse attività di configurazione vengono usati i tipi seguenti:The following types are used to support various configuration tasks:

    Oltre a utilizzare le informazioni di configurazione esistenti, è possibile creare e utilizzare elementi di configurazione personalizzati estendendo i tipi di configurazione incorporati, ad esempio le classi ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertye ConfigurationSection.In addition to working with existing configuration information, you can create and work with custom configuration elements by extending the built-in configuration types such as the ConfigurationElement, ConfigurationElementCollection, ConfigurationProperty, and ConfigurationSection classes. Per un esempio di come estendere un tipo di configurazione predefinito a livello di codice, vedere ConfigurationSection.For an example of how to extend a built-in configuration type programmatically, see ConfigurationSection. Per un esempio di come estendere un tipo di configurazione incorporato che usa il modello basato su attributi, vedere ConfigurationElement.For an example of how to extend a built-in configuration type that uses the attribute-based model, see ConfigurationElement.

Note per gli eredi

La classe Configuration consente l'accesso a livello di codice per la modifica dei file di configurazione.The Configuration class enables programmatic access for editing configuration files. Usare uno dei metodi aperti forniti da ConfigurationManager.You use one of the Open methods provided by ConfigurationManager. Questi metodi restituiscono un oggetto Configuration, che a sua volta fornisce i metodi e le proprietà richiesti per gestire i file di configurazione sottostanti.These methods return a Configuration object, which in turn provides the required methods and properties to handle the underlying configuration files. È possibile accedere a questi file per la lettura o la scrittura.You can access these files for reading or writing.

Per leggere i file di configurazione, usare GetSection(String) o GetSectionGroup(String) per leggere le informazioni di configurazione.To read the configuration files, use GetSection(String) or GetSectionGroup(String) to read configuration information. L'utente o il processo che legge deve disporre delle seguenti autorizzazioni:The user or process that reads must have the following permissions: -Autorizzazione di lettura per il file di configurazione al livello della gerarchia di configurazione corrente.- Read permission on the configuration file at the current configuration hierarchy level.

-Autorizzazioni di lettura per tutti i file di configurazione padre.- Read permissions on all the parent configuration files.

Se l'applicazione richiede l'accesso in sola lettura alla propria configurazione, è consigliabile usare il metodo GetSection(String).If your application needs read-only access to its own configuration, we recommend that you use the GetSection(String) method. Questo metodo consente di accedere ai valori di configurazione memorizzati nella cache per l'applicazione corrente, che offre prestazioni migliori rispetto alla classe Configuration.This method provides access to the cached configuration values for the current application, which has better performance than the Configuration class.

Per scrivere nei file di configurazione, usare uno dei metodi Save.To write to the configuration files, use one of the Save methods. L'utente o il processo che scrive deve disporre delle autorizzazioni seguenti:The user or process that writes must have the following permissions: -Autorizzazione di scrittura per il file di configurazione e la directory al livello della gerarchia di configurazione corrente.- Write permission on the configuration file and directory at the current configuration hierarchy level.

-Autorizzazioni di lettura per tutti i file di configurazione.- Read permissions on all the configuration files.

Proprietà

AppSettings

Ottiene i dati di AppSettingsSection per la configurazione predefinita dell'applicazione corrente.Gets the AppSettingsSection data for the current application's default configuration.

ConnectionStrings

Ottiene i dati di ConnectionStringsSection per la configurazione predefinita dell'applicazione corrente.Gets the ConnectionStringsSection data for the current application's default configuration.

Metodi

GetSection(String)

Recupera una sezione di configurazione specificata per la configurazione predefinita dell'applicazione corrente.Retrieves a specified configuration section for the current application's default configuration.

OpenExeConfiguration(ConfigurationUserLevel)

Apre il file di configurazione per l'applicazione corrente come oggetto Configuration.Opens the configuration file for the current application as a Configuration object.

OpenExeConfiguration(String)

Apre il file di configurazione client specificato come oggetto Configuration.Opens the specified client configuration file as a Configuration object.

OpenMachineConfiguration()

Apre il file di configurazione del computer corrente come oggetto Configuration.Opens the machine configuration file on the current computer as a Configuration object.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Apre il file di configurazione client specificato come un oggetto Configuration che usa il mapping del file e il livello utente specificati.Opens the specified client configuration file as a Configuration object that uses the specified file mapping and user level.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Apre il file di configurazione client specificato come oggetto Configuration che usa il mapping del file, il livello utente e l'opzione di precaricamento specificati.Opens the specified client configuration file as a Configuration object that uses the specified file mapping, user level, and preload option.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Apre il file di configurazione del computer come un oggetto Configuration che usa il mapping del file specificato.Opens the machine configuration file as a Configuration object that uses the specified file mapping.

RefreshSection(String)

Aggiorna la sezione denominata in modo che al successivo recupero venga riletta dal disco.Refreshes the named section so the next time that it is retrieved it will be re-read from disk.

Si applica a

Vedi anche