Aracılığıyla paylaş


Uygulama yapılandırması

Tavsiye

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 kapak küçük resmi.

Web Forms'da uygulama yapılandırmasını yüklemenin birincil yolu ,web.config dosyasındaki girdilerin (sunucuda veya web.configtarafından başvurulan ilgili bir yapılandırma dosyasında) olmasıdır. Uygulama ayarları, veri deposu bağlantı dizeleri ve uygulamaya eklenen diğer genişletilmiş yapılandırma sağlayıcılarıyla etkileşim kurmak için statik ConfigurationManager nesneyi 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ı bulunabilir. Ancak, bu yapılandırmayla etkileşim yoktur; diğer kaynaklardan daha yapılandırılmış uygulama ayarlarını alabilirsiniz. Şimdi yapılandırmanın nasıl toplandığına ve bir web.config dosyasından yapılandırma bilgilerine nasıl erişmeye devam ettiğ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, çalıştığı ortamın farkındadır ve bu ortamın Production veya Development olduğunu 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. appsettings.jsondosyası, eğer varsa
  2. appsettings.{ENVIRONMENT_NAME}.json dosyası, varsa
  3. Diskte kullanıcı sırları dosyası, mevcutsa
  4. Ortam değişkenleri
  5. Komut satırı argümanları

appsettings.json formatı 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"
  }
}

JSON verildiğinde, yapılandırma sistemi alt değerleri düzleştirir ve bunları tam nitelikli hiyerarşik yollarına başvurarak referans alır. İki nokta üst üste (:) karakteri hiyerarşideki her özelliği ayırır. Örneğin, yapılandırma anahtarı section1:key0 nesne değişmezinin section1 değerine erişir.

Kullanıcı gizli bilgileri

Kullanıcı sırları ş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 Development ortamında çalışıyorken yüklenir.
  • Belirli bir uygulamayla ilişkilendirildi.
  • .NET CLI user-secrets komutuyla yönetilir.

Uygulamanızı gizli bilgiler depolama için user-secrets komutunu çalıştırarak yapılandırın.

dotnet user-secrets init

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

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

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

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ında uygulama gizli dizilerinin güvenli depolaması 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ızda okunurken düzleştirilir ve iki nokta ile ayrılır. Ancak, bazı işletim sistemleri iki nokta karakterini ortam değişkeni adlarına izin vermez. ASP.NET Core, çift alt çizgili (__) değerlere erişilirken, onları iki noktaya 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ı argümanları

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 dönüşü

Uygulamanızı IIS üzerinde Windows'a dağıttıysanız ,web.config dosyası iis'yi uygulamanızı yönetecek şekilde 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, environmentVariables öğesi içinde aspNetCore öğesi 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ı oku

ASP.NET Core, IConfiguration arayüzü aracılığıyla uygulama yapılandırması sağlar. Bu yapılandırma arabirimi Blazor bileşenleriniz, Blazor sayfalarınız ve yapılandırmaya erişmesi gereken diğer ASP.NET Core tarafından yönetilen 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 sayfasında veya bileşenin Razor işaretlemesinde, IConfiguration nesnesini @inject dosyasının en üstüne yönergesi ile şu şekilde enjekte edebilirsiniz:

@inject IConfiguration Configuration

Önceki ifade, IConfiguration nesnesini Razor şablonunun geri kalanında Configuration değişkeni olarak kullanılabilir kılar.

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"];

Tüm yapılandırma bölümlerini almak için, belirli bir konumdaki anahtar koleksiyonunu almak üzere GetSection yöntemini kullanabilirsiniz. Bu, önceki örnekten bölüm1 için yapılandırmayı almanıza benzer bir GetSection("section1") söz dizimine sahiptir.

Kesin türemiş yapılandırma

Web Forms ile, ConfigurationSection türünden ve ilişkili türlerden devralınan güçlü türlendirilmiş 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:

  • Ana sınıftan devralmaya gerek yok.
  • 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, Startup.ConfigureServices özelliği yerine kullanarak builder.Services dosyasındaki services yöntemine aşağıdaki satır eklenerek doldurulabilir:

services.Configure<MyConfig>(Configuration);

Uygulamanın geri kalanında, güçlü bir şekilde yazılmış yapılandırma ayarlarını almak için sınıflara giriş parametresi veya @inject türünde Razor şablonlarına IOptions<MyConfig> yönergesi 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.