Condividi tramite


ConfigurationManager Classe

Definizione

Fornisce l'accesso ai file di configurazione per le applicazioni client. Questa 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 una semplice applicazione console 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

Nell'esempio seguente viene illustrato come usare una 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

Commenti

La classe ConfigurationManager consente di accedere alle informazioni di configurazione del computer, dell'applicazione e dell'utente. Questa classe sostituisce la classe ConfigurationSettings, deprecata. Per le applicazioni Web, usare la classe WebConfigurationManager.

Per usare la classe ConfigurationManager, il progetto deve fare riferimento all'assembly System.Configuration. Per impostazione predefinita, alcuni modelli di progetto, ad esempio 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 tramite file di configurazione.

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

La classe ConfigurationManager 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 metodo GetSection. Per alcune sezioni, ad esempio appSettings e connectionStrings, usare le classi AppSettings e ConnectionStrings. Questi membri eseguono operazioni di sola lettura, usano una singola istanza memorizzata nella cache della configurazione e sono in grado di supportare il multithread.

  • Leggere e scrivere file di configurazione nel suo complesso. L'applicazione può leggere e scrivere 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 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. 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 classi ConfigurationElement, ConfigurationElementCollection, ConfigurationPropertye 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 su attributi, vedere ConfigurationElement.

Note per gli eredi

La classe Configuration consente l'accesso a livello di codice per la modifica dei file di configurazione. Si usa uno dei metodi di Open forniti da ConfigurationManager. Questi metodi restituiscono un oggetto Configuration, 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 deve 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 metodo GetSection(String). Questo metodo consente di accedere ai valori di configurazione memorizzati nella cache per l'applicazione corrente, con prestazioni migliori rispetto alla classe Configuration.

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

ConnectionStrings

Ottiene i dati 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 nel computer corrente come oggetto Configuration.

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean)

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

OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel)

Apre il file di configurazione client specificato come oggetto Configuration che utilizza il mapping di file e il livello utente specificati.

OpenMappedMachineConfiguration(ConfigurationFileMap)

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

RefreshSection(String)

Aggiorna la sezione denominata in modo che la prossima volta che viene recuperata verrà rilette dal disco.

Si applica a

Vedi anche