ConfigurationManager Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İstemci uygulamaları için yapılandırma dosyalarına erişim sağlar. Bu sınıf devralınamaz.
public ref class ConfigurationManager abstract sealed
public static class ConfigurationManager
type ConfigurationManager = class
Public Class ConfigurationManager
- Devralma
-
ConfigurationManager
Örnekler
İlk örnekte uygulama ayarlarını okuyan, yeni bir ayar ekleyen ve mevcut bir ayarı güncelleştiren basit bir konsol uygulaması gösterilmektedir.
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
Önceki örnekte, projenizin aşağıda gösterildiği gibi bir App.config dosyası olduğu varsayılır.
<?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>
Aşağıdaki örnekte, veritabanından veri okumak için bağlantı dizesi nasıl kullanılacağı gösterilmektedir.
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
Önceki örnekte, projenizin aşağıda gösterildiği gibi bir App.config olduğu varsayılır.
<?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>
Açıklamalar
ConfigurationManager sınıfı makine, uygulama ve kullanıcı yapılandırma bilgilerine erişmenizi sağlar. Bu sınıf, kullanım dışı olan sınıfın ConfigurationSettings yerini alır. Web uygulamaları için sınıfını WebConfigurationManager kullanın.
sınıfını ConfigurationManager kullanmak için projenizin derlemeye başvurması System.Configuration
gerekir. Varsayılan olarak, Konsol Uygulaması gibi bazı proje şablonları bu derlemeye başvurmaz, bu nedenle el ile başvurmanız gerekir.
Not
Uygulama yapılandırma dosyasının adı ve konumu, uygulamanın konağına bağlıdır. Daha fazla bilgi için bkz . Yapılandırma Dosyalarını kullanarak Uygulamaları Yapılandırma.
Yapılandırma bilgilerini işlemek için yerleşik System.Configuration türleri kullanabilir veya bunlardan türetebilirsiniz. Bu türleri kullanarak doğrudan yapılandırma bilgileriyle çalışabilir ve yapılandırma dosyalarını özel bilgiler içerecek şekilde genişletebilirsiniz.
sınıfı, ConfigurationManager aşağıdaki görevleri gerçekleştirmenizi sağlayan üyeler içerir:
Yapılandırma dosyasından bir bölüm okuyun. Yapılandırma bilgilerine erişmek için yöntemini çağırın GetSection . ve
connectionStrings
gibiappSettings
bazı bölümler için ve ConnectionStrings sınıflarını AppSettings kullanın. Bu üyeler salt okunur işlemler gerçekleştirir, yapılandırmanın önbelleğe alınmış tek bir örneğini kullanır ve çoklu iş parçacığı algılar.Yapılandırma dosyalarını bir bütün olarak okuma ve yazma. Uygulamanız, yapılandırma ayarlarını kendisi veya diğer uygulamalar ya da bilgisayarlar için yerel olarak veya uzaktan herhangi bir düzeyde okuyabilir ve yazabilir. SampleApp.exe.config gibi bir yapılandırma dosyasını açmak için sınıfı tarafından ConfigurationManager sağlanan yöntemlerden birini kullanın. Bu yöntemler, ilişkili yapılandırma dosyalarıyla çalışmak için kullanabileceğiniz yöntemleri ve özellikleri kullanıma sunan bir Configuration nesne döndürür. Yöntemler okuma veya yazma işlemleri gerçekleştirir ve bir dosya her yazıldıktan sonra yapılandırma verilerini oluşturur.
Yapılandırma görevlerini destekleme. Çeşitli yapılandırma görevlerini desteklemek için aşağıdaki türler kullanılır:
Var olan yapılandırma bilgileriyle çalışmaya ek olarak, , ConfigurationElementCollection, ConfigurationPropertyve sınıfları gibi ConfigurationElementyerleşik yapılandırma türlerini genişleterek özel yapılandırma öğeleri oluşturabilir ve ConfigurationSection bunlarla çalışabilirsiniz. Yerleşik yapılandırma türünü program aracılığıyla genişletme örneği için bkz ConfigurationSection. . Öznitelik tabanlı modeli kullanan yerleşik bir yapılandırma türünün nasıl genişletildiğini gösteren bir örnek için bkz ConfigurationElement. .
Devralanlara Notlar
sınıfı, Configuration yapılandırma dosyalarını düzenlemek için programlı erişimi etkinleştirir. tarafından ConfigurationManagersağlanan yöntemlerden birini Open
kullanırsınız. Bu yöntemler, temel yapılandırma dosyalarını işlemek için gerekli yöntemleri ve özellikleri sağlayan bir Configuration nesnesi döndürür. Bu dosyalara okumak veya yazmak için erişebilirsiniz.
Yapılandırma dosyalarını okumak için veya GetSectionGroup(String)kullanınGetSection(String). Okuyan kullanıcı veya işlemin aşağıdaki izinlere sahip olması gerekir:
Geçerli yapılandırma hiyerarşisi düzeyinde yapılandırma dosyasında okuma izni.
Tüm üst yapılandırma dosyalarındaki okuma izinleri.
Uygulamanızın kendi yapılandırmasına salt okunur erişime ihtiyacı varsa yöntemini kullanmanızı GetSection(String) öneririz. Bu yöntem, geçerli uygulama için önbelleğe alınmış yapılandırma değerlerine erişim sağlar ve bu da sınıftan daha iyi bir performansa Configuration sahiptir.
Yapılandırma dosyalarına yazmak için yöntemlerden Save birini kullanın. Yazan kullanıcı veya işlem aşağıdaki izinlere sahip olmalıdır:
Geçerli yapılandırma hiyerarşisi düzeyinde yapılandırma dosyası ve dizini üzerinde yazma izni.
Tüm yapılandırma dosyalarındaki okuma izinleri.
Özellikler
AppSettings |
AppSettingsSection Geçerli uygulamanın varsayılan yapılandırmasına ilişkin verileri alır. |
ConnectionStrings |
ConnectionStringsSection Geçerli uygulamanın varsayılan yapılandırmasına ilişkin verileri alır. |
Yöntemler
GetSection(String) |
Geçerli uygulamanın varsayılan yapılandırması için belirtilen yapılandırma bölümünü alır. |
OpenExeConfiguration(ConfigurationUserLevel) |
Geçerli uygulamanın yapılandırma dosyasını nesne Configuration olarak açar. |
OpenExeConfiguration(String) |
Belirtilen istemci yapılandırma dosyasını nesne Configuration olarak açar. |
OpenMachineConfiguration() |
Geçerli bilgisayarda makine yapılandırma dosyasını nesne Configuration olarak açar. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel) |
Belirtilen istemci yapılandırma dosyasını, belirtilen dosya eşlemesini ve kullanıcı düzeyini kullanan bir Configuration nesne olarak açar. |
OpenMappedExeConfiguration(ExeConfigurationFileMap, ConfigurationUserLevel, Boolean) |
Belirtilen istemci yapılandırma dosyasını belirtilen dosya eşleme, kullanıcı düzeyi ve ön yükleme seçeneğini kullanan bir Configuration nesne olarak açar. |
OpenMappedMachineConfiguration(ConfigurationFileMap) |
Makine yapılandırma dosyasını belirtilen dosya eşlemesini kullanan bir Configuration nesne olarak açar. |
RefreshSection(String) |
Adlandırılmış bölümü yeniler, böylece bir sonraki alındığında diskten yeniden okunur. |