ConfigurationManager Classe

Definizione

Fornisce l'accesso ai file di configurazione per le applicazioni client. La classe non può essere ereditata.

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

Esempio

Il primo esempio mostra un'applicazione console semplice che legge le impostazioni dell'applicazione, aggiunge una nuova impostazione e aggiorna un'impostazione esistente.

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  

L'esempio precedente presuppone che il progetto abbia un file App.config, come illustrato di seguito.

<?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 usare un stringa di connessione per leggere i dati da un 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  

L'esempio precedente presuppone che il progetto abbia un App.config, come illustrato di seguito.

<?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 ConfigurationManager classe consente di accedere alle informazioni di configurazione del computer, dell'applicazione e dell'utente. Questa classe sostituisce la ConfigurationSettings classe, deprecata. Per le applicazioni Web, usare la WebConfigurationManager classe .

Per usare la ConfigurationManager classe, il progetto deve fare riferimento all'assembly System.Configuration . Per impostazione predefinita, alcuni modelli di progetto, ad esempio l'applicazione console, non fanno riferimento a questo assembly, quindi è necessario farvi riferimento manualmente.

Nota

Il nome e il percorso del file di configurazione dell'applicazione dipendono dall'host dell'applicazione. Per altre informazioni, vedere Configurazione delle app usando i file di configurazione.

È possibile usare i tipi predefiniti System.Configuration o derivarli per gestire le informazioni di configurazione. Usando questi tipi, è possibile usare direttamente le informazioni di configurazione e estendere i file di configurazione per includere informazioni personalizzate.

La ConfigurationManager classe include membri che consentono di eseguire le attività seguenti:

  • Leggere una sezione da un file di configurazione. Per accedere alle informazioni di configurazione, chiamare il GetSection metodo . Per alcune sezioni come appSettings e connectionStrings, usare le AppSettings classi e ConnectionStrings . Questi membri eseguono operazioni di sola lettura, usano un'unica istanza memorizzata nella cache della configurazione e sono consapevoli di più operazioni.

  • Leggere e scrivere file di configurazione nel suo complesso. L'applicazione può leggere e scrivere le impostazioni di configurazione a qualsiasi livello, per se stesso o per altre applicazioni o computer, in locale o in remoto. Usare uno dei metodi forniti dalla ConfigurationManager classe per aprire un file di configurazione, ad esempio SampleApp.exe.config. Questi metodi restituiscono un Configuration oggetto che a sua volta espone metodi e proprietà che è possibile usare per usare i file di configurazione associati. I metodi eseguono operazioni di lettura o scrittura e creano i dati di configurazione ogni volta che viene scritto un file.

  • Supportare le attività di configurazione. I tipi seguenti vengono usati per supportare varie attività di configurazione:

    Oltre a usare le informazioni di configurazione esistenti, è possibile creare e usare elementi di configurazione personalizzati estendendo i tipi di configurazione predefiniti, ad esempio le ConfigurationElementclassi , ConfigurationElementCollectionConfigurationProperty, e ConfigurationSection . Per un esempio di come estendere un tipo di configurazione predefinito a livello di codice, vedere ConfigurationSection. Per un esempio di come estendere un tipo di configurazione predefinito che usa il modello basato sull'attributo, vedere ConfigurationElement.

Note per gli eredi

La classe abilita l'accesso Configuration a livello di codice per la modifica dei file di configurazione. Si usa uno dei Open metodi forniti da ConfigurationManager. Questi metodi restituiscono un Configuration oggetto, che a sua volta fornisce i metodi e le proprietà necessari per gestire i file di configurazione sottostanti. È possibile accedere a questi file per la lettura o la scrittura.

Per leggere i file di configurazione, usare GetSection(String) o GetSectionGroup(String). 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 il GetSection(String) metodo . Questo metodo fornisce l'accesso ai valori di configurazione memorizzati nella cache per l'applicazione corrente, con prestazioni migliori rispetto alla Configuration classe.

Per scrivere nei file di configurazione, usare uno dei Save metodi. 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 i dati di AppSettingsSection per la configurazione predefinita dell'applicazione corrente.

ConnectionStrings

Ottiene i dati di ConnectionStringsSection per la configurazione predefinita dell'applicazione corrente.

Metodi

GetSection(String)

Recupera una sezione di configurazione specificata per la configurazione predefinita dell'applicazione corrente.

OpenExeConfiguration(ConfigurationUserLevel)

Apre il file di configurazione per l'applicazione corrente come oggetto Configuration.

OpenExeConfiguration(String)

Apre il file di configurazione client specificato come oggetto Configuration.

OpenMachineConfiguration()

Apre il file di configurazione del computer corrente come oggetto Configuration.

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.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

Apre il file di configurazione client specificato come un oggetto Configuration che utilizza il mapping del file, il livello utente specificati e l'opzione di precaricamento.

OpenMappedMachineConfiguration(ConfigurationFileMap)

Apre il file di configurazione del computer come un oggetto Configuration che usa il mapping del file specificato.

RefreshSection(String)

Aggiorna la sezione denominata in modo che al successivo recupero venga riletta dal disco.

Si applica a

Vedi anche