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. 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
econnectionStrings
, 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. |