Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Stephen Molloy ve Rick Anderson tarafından
Yapılandırma oluşturucuları, ASP.NET uygulamaların dış kaynaklardan yapılandırma değerlerini alması için modern ve çevik bir mekanizma sağlar.
Yapılandırma oluşturucuları:
- .NET Framework 4.7.1 ve sonraki sürümlerde kullanılabilir.
- Yapılandırma değerlerini okumak için esnek bir mekanizma sağlayın.
- Kapsayıcı ve bulut odaklı bir ortama taşınan uygulamaların bazı temel gereksinimlerini karşılayın.
- .NET yapılandırma sisteminde daha önce kullanılamayan kaynaklardan (örneğin, Azure Key Vault ve ortam değişkenleri) çizim yaparak yapılandırma verilerinin korunmasını geliştirmek için kullanılabilir.
Anahtar/değer yapılandırma oluşturucuları
Yapılandırma oluşturucuları tarafından işlenebilen yaygın bir senaryo, bir anahtar/değer deseni izleyen yapılandırma bölümleri için temel bir anahtar/değer değiştirme mekanizması sağlamaktır. ConfigurationBuilders'ın .NET Framework kavramı belirli yapılandırma bölümleri veya desenleriyle sınırlı değildir. Ancak içindeki yapılandırma oluşturucularının Microsoft.Configuration.ConfigurationBuilders çoğu (github, NuGet) anahtar/değer deseni içinde çalışır.
Anahtar/değer yapılandırma oluşturucuları ayarları
Aşağıdaki ayarlar içindeki Microsoft.Configuration.ConfigurationBuilderstüm anahtar/değer yapılandırma oluşturucuları için geçerlidir.
Modu
Yapılandırma oluşturucuları, yapılandırma sisteminin seçili anahtar/değer öğelerini doldurmak için bir dış anahtar/değer bilgisi kaynağı kullanır. Özellikle, <appSettings/> ve <connectionStrings/> bölümleri yapılandırma oluşturucularından özel işlem alır. Oluşturucular üç modda çalışır:
Strict- Varsayılan mod. Bu modda yapılandırma oluşturucusu yalnızca iyi bilinen anahtar/değer odaklı yapılandırma bölümlerinde çalışır.Strictmodu, bölümdeki her anahtarı numaralandırır. Dış kaynakta eşleşen bir anahtar bulunursa:- Yapılandırma oluşturucuları, sonuçta elde edilen yapılandırma bölümündeki değeri dış kaynaktaki değerle değiştirir.
Greedy- Bu mod modlaStrictyakından ilgilidir. Özgün yapılandırmada zaten var olan anahtarlar ile sınırlı olmak yerine:- Yapılandırma oluşturucuları, dış kaynaktan elde edilen yapılandırma bölümüne tüm anahtar/değer çiftlerini ekler.
Expand- Bir yapılandırma bölümü nesnesine ayrıştırmadan önce ham XML üzerinde çalışır. Bir dizedeki belirteçlerin genişletilmesi olarak düşünülebilir. Ham XML metninde${token}desenine uyan herhangi bir bölüm, belirtecin genişletilmesi için adaydır. Dış kaynakta karşılık gelen değer bulunmazsa belirteç değiştirilmez. Bu modda oluşturucular<appSettings/>ve<connectionStrings/>bölümleriyle sınırlı değildir.
Web.config dosyasından aşağıdaki işaretleme,EnvironmentConfigBuilder’ı Strict etkinleştirir:
<configuration>
<configSections>
<section name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection,
System.Configuration, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="MyEnvironment"
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment,
Version=1.0.0.0, Culture=neutral" />
</builders>
</configBuilders>
<appSettings configBuilders="MyEnvironment">
<add key="ServiceID" value="ServiceID value from web.config" />
<add key="ServiceKey" value="ServiceKey value from web.config" />
</appSettings>
<connectionStrings configBuilders="MyEnvironment">
<add name="default" connectionString="Data Source=web.config/mydb.db" />
</connectionStrings>
Aşağıdaki kod, önceki web.config dosyasında gösterilen <appSettings/> ve <connectionStrings/>'i okur.
using System;
using System.Configuration;
using System.Web.UI;
namespace MyConfigBuilders
{
public partial class About : Page
{
public string ServiceID { get; set; }
public string ServiceKey { get; set; }
public string ConString { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
ServiceID = ConfigurationManager.AppSettings["ServiceID"];
ServiceKey = ConfigurationManager.AppSettings["ServiceKey"];
ConString = ConfigurationManager.ConnectionStrings["default"]
?.ConnectionString;
}
}
}
Yukarıdaki kod, özellik değerlerini şu şekilde ayarlar:
- Anahtarlar ortam değişkenlerinde ayarlanmadıysa web.config dosyasındaki değerler.
- Ayarlanırsa ortam değişkeninin değerleri.
Örneğin, ServiceID şunları içerir:
- Ortam değişkeni
ServiceIDayarlanmadıysa "web.config dosyasından ServiceID değeri". - Ayarlanırsa ortam değişkeninin
ServiceIDdeğeri.
Aşağıdaki görüntüde, ortam düzenleyicisinde <appSettings/> önceki web.config dosyasındaki anahtarlar/değerler gösterilmektedir:
Not: Ortam değişkenlerindeki değişiklikleri görmek için Visual Studio'dan çıkıp yeniden başlatmanız gerekebilir.
Ön ek işleme
Anahtar ön ekleri, anahtarların ayarlanmasını basitleştirebilir çünkü:
- .NET Framework yapılandırması karmaşıktır ve iç içe yerleştirilmiştir.
- Dış anahtar/değer kaynakları genellikle temeldir ve doğası gereği düz bir kaynaktır. Örneğin, ortam değişkenleri iç içe yerleştirilmemiştir.
Ortam değişkenleri aracılığıyla yapılandırmaya hem <appSettings/> hem de <connectionStrings/> eklemek için aşağıdaki yaklaşımlardan herhangi birini kullanın.
-
EnvironmentConfigBuildervarsayılanStrictmodda ve yapılandırma dosyasında uygun anahtar adlarıyla. Yukarıdaki kod ve işaretleme bu yaklaşımı benimser. Bu yaklaşımı kullanarak hem<appSettings/>hem de<connectionStrings/>içinde aynı adlı anahtarlara sahip olamazsınız. - İki
EnvironmentConfigBuilder’yi farklı ön eklerle vestripPrefixileGreedymodunda kullanın. Bu yaklaşımla, uygulama yapılandırma dosyasını güncellemeye gerek kalmadan<appSettings/>ve<connectionStrings/>okuyabilir. Bir sonraki bölüm olan stripPrefix, bunun nasıl yapılacağını gösterir. - İki
EnvironmentConfigBuilder'yiGreedymodunda farklı ön eklerle kullanın. Bu yaklaşımda, anahtar adlarının ön eke göre farklı olması gerektiğinden yinelenen anahtar adlara sahip olamazsınız. Örneğin:
<configuration>
<configSections>
<section name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection,
System.Configuration, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="AS_Environment" mode="Greedy" prefix="AppSetting_"
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment" />
<add name="CS_Environment" mode="Greedy" prefix="ConnStr_"
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment" />
</builders>
</configBuilders>
<appSettings configBuilders="AS_Environment">
<add key="AppSetting_ServiceID" value="ServiceID value from web.config" />
<add key="AppSetting_default" value="AppSetting_default value from web.config" />
</appSettings>
<connectionStrings configBuilders="CS_Environment">
<add name="ConnStr_default" connectionString="Data Source=web.config/mydb.db" />
</connectionStrings>
Yukarıdaki işaretlemeyle, iki farklı bölümün yapılandırmasını doldurmak için aynı düz anahtar/değer kaynağı kullanılabilir.
Aşağıdaki görüntüde, ortam düzenleyicisinde ayarlanan önceki web.config dosyasından <appSettings/> ve <connectionStrings/> anahtarları/değerleri gösterilmektedir.
Aşağıdaki kod, önceki web.config dosyasında bulunan <appSettings/> anahtarlarını ve <connectionStrings/> değerlerini okur:
public partial class Contact : Page
{
public string ServiceID { get; set; }
public string AppSetting_default { get; set; }
public string ConString { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
ServiceID = ConfigurationManager.AppSettings["AppSetting_ServiceID"];
AppSetting_default = ConfigurationManager.AppSettings["AppSetting_default"];
ConString = ConfigurationManager.ConnectionStrings["ConnStr_default"]
?.ConnectionString;
}
}
Yukarıdaki kod, özellik değerlerini şu şekilde ayarlar:
- Anahtarlar ortam değişkenlerinde ayarlanmadıysa web.config dosyasındaki değerler.
- Ayarlanırsa ortam değişkeninin değerleri.
Örneğin, önceki web.config dosyası, önceki ortam düzenleyicisi görüntüsündeki anahtarlar/değerler ve önceki kod kullanılarak aşağıdaki değerler ayarlanır:
| Anahtar | Değer |
|---|---|
| AppSetting_ServiceID | AppSetting_ServiceID env değişkenlerinden alınır |
| AppSetting_default | AppSetting_default değeri env'den |
| ConnStr_default | env'den ConnStr_default değer |
ön eki kaldır
stripPrefix: boolean, varsayılan olarak falseolarak gösterilir.
Yukarıdaki XML işaretlemesi, uygulama ayarlarını bağlantı dizesi'lerden ayırır, ancak web.config dosyasındaki tüm anahtarların belirtilen ön eki kullanmasını gerektirir. Örneğin, AppSetting öneki, ServiceID anahtarına ("AppSetting_ServiceID") eklenmelidir.
stripPrefix, ön ek web.config dosyasında kullanılmaz. Ön ek, yapılandırma oluşturucu kaynağında (örneğin, ortamda) gereklidir. Geliştiricilerin çoğunun kullanacağını stripPrefixtahmin ediyoruz.
Uygulamalar genellikle ön eki kaldırır. Aşağıdaki web.config ön ekini kaldırır.
<configuration>
<configSections>
<section name="configBuilders"
type="System.Configuration.ConfigurationBuildersSection,
System.Configuration, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
restartOnExternalChanges="false" requirePermission="false" />
</configSections>
<configBuilders>
<builders>
<add name="AS_Environment" mode="Greedy" prefix="AppSetting_"
stripPrefix="true"
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment,
Version=1.0.0.0, Culture=neutral" />
<add name="CS_Environment" mode="Greedy" prefix="ConnStr_"
stripPrefix="true"
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment,
Version=1.0.0.0, Culture=neutral" />
</builders>
</configBuilders>
<appSettings configBuilders="AS_Environment">
<add key="ServiceID" value="ServiceID value from web.config" />
<add key="default" value="AppSetting_default value from web.config" />
</appSettings>
<connectionStrings configBuilders="CS_Environment">
<add name="default" connectionString="Data Source=web.config/mydb.db" />
</connectionStrings>
Yukarıdaki web.config dosyasında default anahtar hem hem <appSettings/>de <connectionStrings/> içindedir.
Aşağıdaki görüntüde, ortam düzenleyicisindeki <appSettings/> dosyasının anahtarları/değerleri <connectionStrings/> ve gösterilmektedir.
Aşağıdaki kod, web.config dosyasındaki <appSettings/> ve <connectionStrings/> anahtarları/değerlerini okur:
public partial class About2 : Page
{
public string ServiceID { get; set; }
public string AppSetting_default { get; set; }
public string ConString { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
ServiceID = ConfigurationManager.AppSettings["ServiceID"];
AppSetting_default = ConfigurationManager.AppSettings["default"];
ConString = ConfigurationManager.ConnectionStrings["default"]
?.ConnectionString;
}
}
Yukarıdaki kod, özellik değerlerini şu şekilde ayarlar:
- Anahtarlar ortam değişkenlerinde ayarlanmadıysa web.config dosyasındaki değerler.
- Ayarlanırsa ortam değişkeninin değerleri.
Örneğin, önceki web.config dosyası, önceki ortam düzenleyicisi görüntüsündeki anahtarlar/değerler ve önceki kod kullanılarak aşağıdaki değerler ayarlanır:
| Anahtar | Değer |
|---|---|
| Hizmet Kimliği | Env değişkenlerinden: AppSetting_ServiceID |
| varsayılan | AppSetting_default değeri env'den alınır. |
| varsayılan | env'den ConnStr_default değer |
tokenPattern
tokenPattern: Dize, varsayılan olarak @"\$\{(\w+)\}"
Expand Oluşturucuların davranışı ham XML'de gibi görünen ${token} belirteçler arar. Arama varsayılan normal ifadesiyle @"\$\{(\w+)\}"yapılır. Eşleşen \w karakter kümesi XML'den daha katıdır ve birçok yapılandırma kaynağı izin verir. Gerektiğinde belirteç adında @"\$\{(\w+)\}" karakterinden daha fazla tokenPattern karakter kullanın.
tokenPattern:Dizgi:
- Geliştiricilerin belirteç eşleştirme için kullanılan regex'i değiştirmesine izin verir.
- İyi biçimlendirilmiş, tehlikeli olmayan bir regex olduğundan emin olmak için doğrulama yapılmaz.
- Bir yakalama grubu içermelidir. Regex'in tamamı belirtecin tamamıyla eşleşmelidir. İlk yakalama, yapılandırma kaynağında arama yapmak için belirteç adı olmalıdır.
Microsoft.Configuration.ConfigurationBuilders'da yapılandırma oluşturucuları
EnvironmentConfigBuilder
<add name="Environment"
[mode|prefix|stripPrefix|tokenPattern]
type="Microsoft.Configuration.ConfigurationBuilders.EnvironmentConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Environment" />
- Yapılandırma oluşturucularının en basitidir.
- Ortamdaki değerleri okur.
- Ek yapılandırma seçenekleri yoktur.
-
nameÖznitelik değeri rastgeledir.
Not: Windows kapsayıcı ortamında, çalışma zamanında ayarlanan değişkenler yalnızca EntryPoint işlem ortamına eklenir. Hizmet olarak veya EntryPoint olmayan bir süreç olarak çalışan uygulamalar, kapsayıcıdaki bir mekanizma aracılığıyla başka bir şekilde enjekte edilmedikçe bu değişkenleri almazlar. ASP.NET tabanlı IIS kapsayıcıları için, ServiceMonitor.exe 'nin geçerli sürümü bunu yalnızca DefaultAppPool'da işler. Diğer Windows tabanlı kapsayıcı değişkenlerinin EntryPoint dışı işlemler için kendi ekleme mekanizmalarını geliştirmesi gerekebilir.
UserSecretsConfigBuilder
Uyarı
Parolaları, hassas bağlantı dizesi veya diğer hassas verileri asla kaynak kodunda depolamayın. Üretim sırları geliştirme veya test amacıyla kullanılmamalıdır.
<add name="UserSecrets"
[mode|prefix|stripPrefix|tokenPattern]
(userSecretsId="{secret string, typically a GUID}" | userSecretsFile="~\secrets.file")
[optional="true"]
type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.UserSecrets" />
Önceki XML'de, userSecretsFile yolunu ~/ veya ~\ kullanarak geçebilirsiniz. Örneğin, yol "userSecretsFile="~/secrets.file" olarak yazılabilir.
Daha fazla bilgi için ConfigurationBuilders Yardımcı Programları sınıfına bakın.
Bu yapılandırma oluşturucusu, ASP.NET Core Secret Manager'a benzer bir özellik sağlar.
UserSecretsConfigBuilder .NET Framework projelerinde kullanılabilir, ancak gizli dizi dosyası belirtilmelidir. Alternatif olarak, UserSecretsId özelliğini proje dosyasında tanımlayabilir ve gizlilik dosyasını okumak için doğru konumda oluşturabilirsiniz. Dış bağımlılıkları projenizin dışında tutmak için gizli dosya XML biçimindedir. XML biçimlendirmesi bir uygulama ayrıntısıdır ve biçime bağlı olmamalıdır. .NET Core projeleriyle bir secrets.json dosyası paylaşmanız gerekiyorsa SimpleJsonConfigBuilder'ı kullanmayı göz önünde bulundurun.
SimpleJsonConfigBuilder.NET Core biçimi de değiştirilebilir bir uygulama ayrıntısı olarak kabul edilmelidir.
için UserSecretsConfigBuilderyapılandırma öznitelikleri:
-
userSecretsId- Bu, xml gizli dizileri dosyasını tanımlamak için tercih edilen yöntemdir. Bu tanımlayıcıyı depolamak için birUserSecretsIdproje özelliği kullanan .NET Core'a benzer şekilde çalışır. Dize benzersiz olmalıdır, GUID olması gerekmez. Bu öznitelikle, bu tanımlayıcıya ait gizli bilgi dosyasınıUserSecretsConfigBuilderiçeren ve iyi bilinen bir yerel konumda (%APPDATA%\Microsoft\UserSecrets\<UserSecrets Id>\secrets.xml) arayın. -
userSecretsFile- Gizli bilgileri içeren dosyayı belirten isteğe bağlı bir öznitelik. Karakter~başlangıçta uygulama köküne başvurmak için kullanılabilir. Bu öznitelik veyauserSecretsIdöznitelik gereklidir. Her ikisi de belirtilirse öncelikuserSecretsFilekazanır. -
optional: boolean, varsayılan değertrue- Gizli anahtar dosyası bulunamazsa istisnayı engeller. -
nameÖznitelik değeri rastgeledir.
Gizli bilgiler dosyası aşağıdaki biçime sahiptir:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<secrets ver="1.0">
<secret name="secret key name" value="secret value" />
</secrets>
</root>
AzureKeyVaultConfigBuilder
<add name="AzureKeyVault"
[mode|prefix|stripPrefix|tokenPattern]
(vaultName="MyVaultName" |
uri="https:/MyVaultName.vault.azure.net")
[version="secrets version"]
[preloadSecretNames="true"]
type="Microsoft.Configuration.ConfigurationBuilders.AzureKeyVaultConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Azure" />
AzureKeyVaultConfigBuilder, Azure Key Vault'ta depolanan değerleri okur.
vaultName gereklidir (kasanın adı veya kasanın URI'si). Diğer öznitelikler, hangi kasaya bağlanılacağını kontrol etme imkanı sağlar, ancak yalnızca uygulama Microsoft.Azure.Services.AppAuthentication ile çalışan bir ortamda çalışmıyorsa gereklidir. Azure Hizmetleri Kimlik Doğrulama kitaplığı, mümkünse yürütme ortamından bağlantı bilgilerini otomatik olarak almak için kullanılır. Bir bağlantı dizesi sağlayarak bağlantı bilgilerinin otomatik olarak alınabilmesini geçersiz kılabilirsiniz.
-
vaultName- Sağlanmadıysaurigereklidir. Azure aboneliğinizdeki anahtar/değer çiftlerinin okunduğu kasayı belirtir. -
uri- Belirtilenurideğere sahip diğer Key Vault sağlayıcılarına bağlanır. Belirtilmezse, Azure (vaultName) depo sağlayıcısıdır. -
version- Azure Key Vault, gizli bilgiler için bir sürümleme özelliği sağlar. Belirtilirseversion, oluşturucu yalnızca bu sürümle eşleşen gizli bilgileri alır. -
preloadSecretNames- Varsayılan olarak, bu oluşturucu başlatıldığında anahtar kasasındaki tüm anahtar adlarını sorgular. Tüm anahtar değerlerinin okunmasını önlemek için bu özniteliği olarakfalseayarlayın. Bunu, sırları birer birer okuyacak şekildefalseolarak ayarlamak. Kasa "Get" erişimine izin veriyor ama "Liste" erişimine izin vermiyorsa, gizli bilgileri birer birer okumak yararlı olabilir. Not:Greedymodu kullanırken,preloadSecretNamestrue(varsayılan) olmalıdır.
KeyPerFileConfigBuilder
<add name="KeyPerFile"
[mode|prefix|stripPrefix|tokenPattern]
(directoryPath="PathToSourceDirectory")
[ignorePrefix="ignore."]
[keyDelimiter=":"]
[optional="false"]
type="Microsoft.Configuration.ConfigurationBuilders.KeyPerFileConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.KeyPerFile" />
KeyPerFileConfigBuilder , bir dizinin dosyalarını değer kaynağı olarak kullanan temel bir yapılandırma oluşturucudur. Dosyanın adı anahtar, içerik ise değerdir. Bu yapılandırma oluşturucusu, düzenlenmiş bir kapsayıcı ortamında çalışırken yararlı olabilir. Docker Swarm ve Kubernetes gibi sistemler, Windows kapsayıcılarına anahtar başına bir dosya biçiminde secrets sunmaktadır.
Öznitelik ayrıntıları:
-
directoryPath- Gerekli. Belirli değerler için aranacak bir yolu belirtir. Windows gizli dizileri için Docker varsayılan olarak C:\ProgramData\Docker\secrets dizininde depolanır. -
ignorePrefix- Bu ön ek ile başlayan dosyalar dışlanır. Varsayılan olarak "yoksay.". -
keyDelimiter- Varsayılan değer:null. Belirtilirse, yapılandırma oluşturucusu, birden çok dizin düzeyini gezerek bu ayırıcıyı kullanarak anahtar adlarını oluşturur. Bu değer isenull, yapılandırma oluşturucusu yalnızca dizinin en üst düzeyine bakar. -
optional- Varsayılan değer:false. Kaynak dizin yoksa yapılandırma oluşturucusunun hatalara neden olup olmayacağını belirtir.
SimpleJsonConfigBuilder
Uyarı
Parolaları, hassas bağlantı dizesi veya diğer hassas verileri asla kaynak kodunda depolamayın. Üretim sırları geliştirme veya test amacıyla kullanılmamalıdır.
<add name="SimpleJson"
[mode|prefix|stripPrefix|tokenPattern]
jsonFile="~\config.json"
[optional="true"]
[jsonMode="(Flat|Sectional)"]
type="Microsoft.Configuration.ConfigurationBuilders.SimpleJsonConfigBuilder,
Microsoft.Configuration.ConfigurationBuilders.Json" />
.NET Core projeleri, yapılandırma için sık sık JSON dosyaları kullanır.
SimpleJsonConfigBuilder oluşturucusu .NET Framework'te .NET Core JSON dosyalarının kullanılmasına izin verir. Bu yapılandırma oluşturucusu düz anahtar/değer kaynağından .NET Framework yapılandırmasının belirli anahtar/değer alanlarına temel bir eşleme sağlar. Bu yapılandırma oluşturucu hiyerarşik yapılandırmalar sağlamaz. JSON yedekleme dosyası, karmaşık bir hiyerarşik nesneye değil, sözlüğe benzer. Çok düzeyli bir hiyerarşik dosya kullanılabilir. Bu sağlayıcı, flatten kullanarak her düzeyde sınırlayıcı olarak : özelliğini ekleyerek derinliği belirtir.
Öznitelik ayrıntıları:
jsonFile- Gerekli. Okunacak JSON dosyasını belirtir. Karakter~başlangıçta uygulama köküne başvurmak için kullanılabilir.optional- Boole değeri, varsayılan değerdirtrue. JSON dosyası bulunamazsa özel durum oluşturma işlemini engeller.jsonMode-[Flat|Sectional].Flatvarsayılan değerdir. olduğundajsonModeFlat, JSON dosyası tek bir düz anahtar/değer kaynağıdır.EnvironmentConfigBuilderveAzureKeyVaultConfigBuilderaynı zamanda tek düz anahtar/değer kaynaklarıdır.SimpleJsonConfigBuildermodunda yapılandırıldığındaSectional:- JSON dosyası kavramsal olarak yalnızca en üst düzeyde birden çok sözlük olarak ayrılır.
- Sözlüklerin her biri yalnızca kendilerine eklenen üst düzey özellik adıyla eşleşen yapılandırma bölümüne uygulanır. Örneğin:
{
"appSettings" : {
"setting1" : "value1",
"setting2" : "value2",
"complex" : {
"setting1" : "complex:value1",
"setting2" : "complex:value2",
}
}
}
Yapılandırma oluşturucuları sırası
Aspnet/MicrosoftConfigurationBuilders GitHub Deposu'ndaki
Özel anahtar/değer yapılandırma oluşturucusunun uygulanması
Yapılandırma oluşturucuları gereksinimlerinizi karşılamıyorsa özel bir tane yazabilirsiniz.
KeyValueConfigBuilder Temel sınıf, değiştirme modlarını ve ön ek sorunlarının çoğunu işler. Yalnızca uygulama gerektiren bir proje:
- Temel sınıftan devralın ve
GetValueileGetAllValuesaracılığıyla temel bir anahtar/değer çifti kaynağı uygulayın. - Microsoft.Configuration.ConfigurationBuilders.Base dosyasını projeye ekleyin.
using Microsoft.Configuration.ConfigurationBuilders;
using System.Collections.Generic;
public class MyCustomConfigBuilder : KeyValueConfigBuilder
{
public override string GetValue(string key)
{
// Key lookup should be case-insensitive, because most key/value collections in
// .NET Framework config sections are case-insensitive.
return "Value for given key, or null.";
}
public override ICollection<KeyValuePair<string, string>> GetAllValues(string prefix)
{
// Populate the return collection.
return new Dictionary<string, string>() { { "one", "1" }, { "two", "2" } };
}
}
KeyValueConfigBuilder Temel sınıf, anahtar/değer yapılandırma oluşturucuları arasında iş ve tutarlı davranışın çoğunu sağlar.