Aracılığıyla paylaş


Uygulama yapılandırması

İpucu

Bu içerik, Blazor .NET Docs'ta veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için ASP NET Web Forms Geliştiricileri için e-Kitap'tan bir alıntıdır.

Blazor-for-ASP-NET-Web-Forms-Developers eBook cover thumbnail.

Web Forms'da uygulama yapılandırmasını yüklemenin birincil yolu, web.config dosyasındaki girdilerin (sunucuda veya web.config tarafından başvurulan ilgili bir yapılandırma dosyasında) olmasıdır. Statik ConfigurationManager nesneyi uygulama ayarları, veri deposu bağlantı dizesi ve uygulamaya eklenen diğer genişletilmiş yapılandırma sağlayıcılarıyla etkileşim kurmak için kullanabilirsiniz. Aşağıdaki kodda görüldüğü gibi uygulama yapılandırmasıyla etkileşimleri görmek normaldir:

var configurationValue = ConfigurationManager.AppSettings["ConfigurationSettingName"];
var connectionString = ConfigurationManager.ConnectionStrings["MyDatabaseConnectionName"].ConnectionString;

ASP.NET Core ve sunucu tarafı Blazorile, uygulamanız bir Windows IIS sunucusunda barındırılıyorsa web.config dosyası mevcut OLABILIR. Ancak, bu yapılandırmayla etkileşim yoktur ConfigurationManager ve diğer kaynaklardan daha yapılandırılmış uygulama yapılandırması alabilirsiniz. Şimdi yapılandırmanın nasıl toplandığına ve web.config dosyasından yapılandırma bilgilerine nasıl erişebileceğinize göz atalım.

Yapılandırma kaynakları

ASP.NET Core, uygulamanız için kullanmak isteyebileceğiniz birçok yapılandırma kaynağı olduğunu tanır. Çerçeve, varsayılan olarak size bu özelliklerden en iyi şekilde birini sunmaya çalışır. Yapılandırma, ASP.NET Core tarafından bu çeşitli kaynaklardan okunur ve toplanır. Aynı yapılandırma anahtarı için daha sonra yüklenen değerler önceki değerlerden önceliklidir.

ASP.NET Core, buluta duyarlı olacak ve hem operatörler hem de geliştiriciler için uygulamaların yapılandırmasını kolaylaştıracak şekilde tasarlanmıştır. ASP.NET Core, ortamınıza duyarlıdır ve ortamınızda ProductionDevelopment çalışıp çalışmadığını bilir. Ortam göstergesi sistem ortam değişkeninde ASPNETCORE_ENVIRONMENT ayarlanır. Hiçbir değer yapılandırılmamışsa, uygulama varsayılan olarak ortamda Production çalışır.

Uygulamanız, ortamın adına göre çeşitli kaynaklardan yapılandırma tetikleyebilir ve ekleyebilir. Varsayılan olarak, yapılandırma aşağıdaki kaynaklardan listelenen sırayla yüklenir:

  1. Varsa dosyayı appsettings.json
  2. Appsettings. Varsa {ENVIRONMENT_NAME}.json dosyası
  3. Varsa diskte kullanıcı gizli dizileri dosyası
  4. Ortam değişkenleri
  5. Komut satırı bağımsız değişkenleri

appsettings.json biçimi ve erişimi

appsettings.json dosyası, aşağıdaki JSON gibi yapılandırılmış değerlerle hiyerarşik olabilir:

{
  "section0": {
    "key0": "value",
    "key1": "value"
  },
  "section1": {
    "key0": "value",
    "key1": "value"
  }
}

Önceki JSON ile sunulduğunda, yapılandırma sistemi alt değerleri düzleştirme ve tam hiyerarşik yollarına başvurma. İki nokta üst üste (:) karakteri hiyerarşideki her özelliği ayırır. Örneğin, yapılandırma anahtarı section1:key0 nesne değişmez key0 değerinin section1 değerine erişir.

Kullanıcı gizli dizileri

Kullanıcı gizli dizileri şunlardır:

  • Geliştiricinin iş istasyonundaki bir JSON dosyasında, uygulama geliştirme klasörünün dışında depolanan yapılandırma değerleri.
  • Yalnızca ortamda Development çalıştırılırken yüklenir.
  • Belirli bir uygulamayla ilişkilendirildi.
  • .NET CLI user-secrets komutuyla yönetilir.

Komutunu yürüterek uygulamanızı gizli dizi depolama için user-secrets yapılandırın:

dotnet user-secrets init

Yukarıdaki komut proje dosyasına bir UserSecretsId öğe ekler. öğesi, gizli dizileri uygulamayla ilişkilendirmek için kullanılan bir GUID içerir. Ardından komutuyla set bir gizli dizi tanımlayabilirsiniz. Örneğin:

dotnet user-secrets set "Parent:ApiKey" "12345"

Yukarıdaki komut, yapılandırma anahtarını değeriyle 12345bir geliştiricinin iş istasyonunda kullanılabilir hale getirirParent:ApiKey.

Kullanıcı gizli dizilerini oluşturma, depolama ve yönetme hakkında daha fazla bilgi için ASP.NET Core'da geliştirme aşamasındaki uygulama gizli dizilerinin Kasa depolanması belgesine bakın.

Ortam değişkenleri

Uygulama yapılandırmanıza yüklenen bir sonraki değer kümesi, sistemin ortam değişkenleridir. Sisteminizin ortam değişkeni ayarlarının tümüne artık yapılandırma API'sini kullanarak erişebilirsiniz. Hiyerarşik değerler, uygulamanızın içinde okunurken düzleştirilmiş ve iki nokta üst üste karakterleriyle ayrılmıştır. Ancak, bazı işletim sistemleri iki nokta üst üste karakter ortam değişkeni adlara izin vermez. ASP.NET Core, çift alt çizgili (__) değerleri erişildiğinde iki nokta üst üste dönüştürerek bu sınırlamayı giderir. Parent:ApiKey Yukarıdaki kullanıcı gizli dizileri bölümünde yer alan değer, ortam değişkeniyle Parent__ApiKeygeçersiz kılınabilir.

Komut satırı bağımsız değişkenleri

Yapılandırma, uygulamanız başlatıldığında komut satırı bağımsız değişkenleri olarak da sağlanabilir. Ayarlanacak yapılandırma değerinin adını ve yapılandırılacak değeri belirtmek için çift tire (--) veya eğik çizgi (/) gösterimini kullanın. Söz dizimi aşağıdaki komutlara benzer:

dotnet run CommandLineKey1=value1 --CommandLineKey2=value2 /CommandLineKey3=value3
dotnet run --CommandLineKey1 value1 /CommandLineKey2 value2
dotnet run Parent:ApiKey=67890

web.config'in dönüşü

Uygulamanızı IIS üzerinde Windows'a dağıttıysanız, web.config dosyası uygulamanızı yönetmek için IIS'yi yapılandırmaya devam eder. Varsayılan olarak, IIS ASP.NET Çekirdek Modülüne (ANCM) bir başvuru ekler. ANCM, Uygulamanızı Kestrel web sunucusunun yerine barındıran yerel bir IIS modülüdür. Bu web.config bölümü aşağıdaki XML işaretlemesine benzer:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\MyApp.exe"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Uygulamaya özgü yapılandırma, öğeye aspNetCore bir environmentVariables öğe iç içe yerleştirilerek tanımlanabilir. Bu bölümde tanımlanan değerler ASP.NET Core uygulamasına ortam değişkenleri olarak sunulur. Ortam değişkenleri, bu uygulama başlatma segmenti sırasında uygun şekilde yüklenir.

<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="Parent:ApiKey" value="67890" />
  </environmentVariables>
</aspNetCore>

Uygulamada yapılandırmayı okuma

ASP.NET Core, arabirim aracılığıyla IConfiguration uygulama yapılandırması sağlar. Bu yapılandırma arabirimi bileşenleriniz, Blazor sayfalarınız Blazor ve yapılandırmaya erişmesi gereken Çekirdek tarafından yönetilen diğer ASP.NET sınıflar tarafından istenmelidir. ASP.NET Core çerçevesi bu arabirimi daha önce yapılandırılmış olan çözümlenmiş yapılandırmayla otomatik olarak doldurur. Bir Blazor sayfada veya bileşenin Razor işaretlemesinde, nesnesini .razor dosyasının IConfigurationen üstüne şöyle bir @inject yönerge ile ekleyebilirsiniz:

@inject IConfiguration Configuration

Bu önceki deyim, nesnesini Razor şablonunun Configuration geri kalanında değişken olarak kullanılabilir hale getirirIConfiguration.

Tek tek yapılandırma ayarları, dizin oluşturucu parametresi olarak aranan yapılandırma ayarı hiyerarşisi belirtilerek okunabilir:

var mySetting = Configuration["section1:key0"];

Önceki örnekten GetSection bölüm1 için yapılandırmayı almaya benzer GetSection("section1") bir söz dizimine sahip belirli bir konumda anahtar koleksiyonunu almak için yöntemini kullanarak yapılandırma bölümlerinin tamamını getirebilirsiniz.

Kesin türemiş yapılandırma

Web Forms ile, türünden ve ilişkili türlerden ConfigurationSection devralınan kesin olarak belirlenmiş bir yapılandırma türü oluşturmak mümkündü. A ConfigurationSection , bu yapılandırma değerleri için bazı iş kuralları ve işleme yapılandırmanıza olanak tanır.

ASP.NET Core'da yapılandırma değerlerini alacak bir sınıf hiyerarşisi belirtebilirsiniz. Bu sınıflar:

  • Üst sınıftan devralma gerekmez.
  • Yakalamak istediğiniz yapılandırma yapısı için özelliklerle eşleşen özellikleri ve tür başvurularını içermelidir public .

Önceki appsettings.json örnekte, değerleri yakalamak için aşağıdaki sınıfları tanımlayabilirsiniz:

public class MyConfig
{
    public MyConfigSection section0 { get; set;}

    public MyConfigSection section1 { get; set;}
}

public class MyConfigSection
{
    public string key0 { get; set; }

    public string key1 { get; set; }
}

Bu sınıf hiyerarşisi yöntemine Startup.ConfigureServices aşağıdaki satırı (veya yerine özelliğini serviceskullanarak builder.Services Program.cs uygun konumu) eklenerek doldurulabilir:

services.Configure<MyConfig>(Configuration);

Uygulamanın geri kalanında, kesin olarak yazılan yapılandırma ayarlarını almak için sınıflara giriş parametresi veya Razor şablonları türündeki IOptions<MyConfig> bir @inject yönerge ekleyebilirsiniz. IOptions<MyConfig>.Value özelliği, yapılandırma ayarlarından MyConfig doldurulan değeri verir.

@inject IOptions<MyConfig> options
@code {
    var MyConfiguration = options.Value;
    var theSetting = MyConfiguration.section1.key0;
}

Seçenekler özelliği hakkında daha fazla bilgi ASP.NET Core belgesindeki Seçenekler deseninde bulunabilir.