ConfigurationManager Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
econnectionStrings
, 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. |