Aracılığıyla paylaş


ASP.NET Core Blazor ortamları

Not

Bu, bu makalenin en son sürümü değildir. Geçerli sürüm için bu makalenin .NET 10 sürümüne bakın.

Uyarı

ASP.NET Core'un bu sürümü artık desteklenmiyor. Daha fazla bilgi için bkz. .NET ve .NET Core Destek İlkesi. Geçerli sürüm için, bu makalenin .NET 9 versiyonunagöz atın.

Bu makale, bir uygulamasında Blazor nasıl yapılandıracağınızı ve okuyacağınızı açıklar.

Bir uygulamayı yerel olarak çalıştırırken, ortam varsayılan olarak Developmentolarak değiştirilir. Uygulama yayımlandığında ortam varsayılan olarak Productionolarak ayarlanır.

Aşağıdaki kuralları öneririz:

  • Yerel geliştirme için her zaman "Development" ortam adını kullanın. Bunun nedeni, ASP.NET Core çerçevesinin uygulamayı yapılandırırken tam olarak bu adı beklemesi ve bir uygulamanın yerel geliştirme çalıştırmaları için araçlara sahip olmasıdır.

  • Test, hazırlama ve üretim ortamları için uygulamayı her zaman yayımlayın ve dağıtın. Yayımlanan uygulamalar için istediğiniz ortam adlandırma düzenini kullanabilirsiniz, ancak her zaman ortam adıyla tam olarak eşleşen büyük/küçük harflerle yazılmış ortam bölümü içeren ayar dosya adlarını kullanmalısınız. Hazırlama için ortam adı olarak "Staging" (büyük "S") kullanın ve uygulama ayarları dosyasını eşleşecek şekilde adlandırın (appsettings.Staging.json). Üretim için ortam adı olarak "Production" (büyük "P") kullanın ve uygulama ayarları dosyasını eşleşecek şekilde adlandırın (appsettings.Production.json).

Ortamı ayarlama

Ortam aşağıdaki yaklaşımlardan herhangi biri kullanılarak ayarlanır:

İstemci için Blazor Web App, ortam geliştiricilerin etkileşimde bulunmadığı bir HTML yorumu aracılığıyla sunucudan belirlenir.

<!--Blazor-WebAssembly:{"environmentName":"Development", ...}-->

Tek başına Blazor WebAssembly bir uygulama için, uygulamanın proje dosyasında (<WasmApplicationEnvironmentName>) MSBuild özelliğiyle .csproj ortamı ayarlayın. Aşağıdaki örnek Staging ortamını ayarlar:

<WasmApplicationEnvironmentName>Staging</WasmApplicationEnvironmentName>

Varsayılan ortamlar Development derleme ve Production yayımlama içindir.

Derleme/yayımlama işlemleri sırasında tek başına Blazor WebAssembly bir uygulamada ortamı ayarlamak için çeşitli yaklaşımlar ve istemcide başlayan veya çalışan bir uygulama için bir yaklaşım vardır:

  • dotnet build veya dotnet publish yürütüldüğünde özellik değerini ayarlayın. Aşağıdaki örnek, bir uygulama yayımlandığında ortamı olarak Staging ayarlar:

    dotnet publish -p:WasmApplicationEnvironmentName=Staging
    
  • Visual Studio'da uygulamanın yapılandırmasına göre derleme veya yayımlama sırasında özelliğini ayarlayın. Aşağıdaki özellik grupları, uygulamanın proje dosyasında veya herhangi bir yayımlama yapılandırma dosyasında (.pubxml ) kullanılabilir. Kullanımdaki diğer derleme yapılandırmaları için ek özellik grupları ekleyin.

    <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
      <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
    <PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
  • Ortam, yayımlama profilinin kullanımına göre ayarlanabilir. Aşağıdaki örnekte ilk koşul, yayımlama profili kullanılmadığında ortamı Development olarak ayarlar (profil olmadan hem derleme hem de yayımlama işlemleri için geçerlidir), ikinci koşul ise herhangi bir yayımlama profili kullanıldığında ortamı Production olarak ayarlamayı kapsar:

    <PropertyGroup Condition="'$(PublishProfile)' == ''">
      <WasmApplicationEnvironmentName>Development</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
    <PropertyGroup Condition="'$(PublishProfile)' != ''">
      <WasmApplicationEnvironmentName>Production</WasmApplicationEnvironmentName>
    </PropertyGroup>
    
  • Özel bir sunucu tarafı web API'si uç noktası oluşturun. Tek başına Blazor WebAssembly uygulama, uygulama başlangıcında veya çalışırken isteğe bağlı olarak kendi ortamını web API'sinden ister. Değer, WebAssemblyStartOptions veya withApplicationEnvironment ile geçirilmelidir.

    Not

    .NET başvuru kaynağına yönelik belge bağlantıları genellikle deponun varsayılan dalını yükler ve bu dal .NET'in sonraki sürümü için geçerli geliştirmeyi temsil eder. Belirli bir sürümün etiketini seçmek için Dallar veya etiketler arasında geçiş yap açılır listesini kullanın. Daha fazla bilgi için ASP.NET Core kaynak kodu için bir sürüm etiketi nasıl seçilir (dotnet/AspNetCore.Docs #26205) bölümüne bakın.

bir Blazor Web Appistemcisinde ortam, Blazor-Environmentadlı bir üst bilgi aracılığıyla ortamı tarayıcıya ileten bir ara yazılım aracılığıyla sunucudan belirlenir. Üst bilgi, WebAssemblyHost istemci tarafı Program dosyasında (WebAssemblyHostBuilder.CreateDefault) oluşturulduğunda ortamı belirler.

Yerel olarak çalışan tek başına bir Blazor WebAssembly uygulaması için geliştirme sunucusu, barındırma ortamından alınan ortam adıyla Blazor-Environment üst bilgisini ekler. Barındırma ortamı, projenin ASPNETCORE_ENVIRONMENT dosyası tarafından oluşturulan Properties/launchSettings.json ortam değişkeninden ortamı ayarlar. Blazor WebAssembly proje şablonundan oluşturulan bir projedeki ortam değişkeninin varsayılan değeri Development. Daha fazla bilgi için Başlık üzerinden istemci tarafı ortamını ayarlama bölümüne bakın.

Barındırılan Blazor WebAssembly bir uygulamanın istemcisinde ortam, adlı Blazor-Environmentbir üst bilgi aracılığıyla ortamı tarayıcıya ileten bir ara yazılım aracılığıyla sunucudan belirlenir. Üst bilgi, WebAssemblyHost istemci tarafı Program dosyasında (WebAssemblyHostBuilder.CreateDefault) oluşturulduğunda ortamı belirler.

Yerel olarak çalışan tek başına bir Blazor WebAssembly uygulaması için geliştirme sunucusu, barındırma ortamından alınan ortam adıyla Blazor-Environment üst bilgisini ekler. Barındırma ortamı, projenin ASPNETCORE_ENVIRONMENT dosyası tarafından oluşturulan Properties/launchSettings.json ortam değişkeninden ortamı ayarlar. Blazor WebAssembly proje şablonundan oluşturulan bir projedeki ortam değişkeninin varsayılan değeri Development. Daha fazla bilgi için Başlık üzerinden istemci tarafı ortamını ayarlama bölümüne bakın.

Uygulamanın geliştirme aşamasında yerel olarak çalışması için uygulama varsayılan olarak Development ortamına ayarlı olur. Uygulamayı yayımlamak, ortamı varsayılan olarak Productionolarak ayarlıyor.

ASP.NET Core uygulama yapılandırması hakkında genel yönergeler için bkz. ASP.NET Core çalışma zamanı ortamları. Geliştirme ve test sırasında ortamın Development dışındaki ortamlarda statik dosyalar içeren sunucu tarafı uygulama yapılandırması için (örneğin, Staging) bkz. ASP.NET Core'daki statik dosyalar.

Blazor başlangıç yapılandırması aracılığıyla istemci tarafı ortamını ayarlama

Aşağıdaki örnek, konak adı Blazoriçeriyorsa, Staging ortamında localhost olarak başlar. Aksi takdirde ortam varsayılan değerine ayarlanır.

Blazor Web App:

<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
  if (window.location.hostname.includes("localhost")) {
    Blazor.start({
      webAssembly: {
        environment: "Staging"
      }
    });
  } else {
    Blazor.start();
  }
</script>

Yukarıdaki örnekte, {BLAZOR SCRIPT} yer tutucusu Blazor betik yolu ve dosya adıdır. Betiğin konumu için bkz. ASP.NET Core Blazor proje yapısı.

Not

Blazor Web App yapılandırmasında webAssembly>environment özelliğini ayarlayan Blazor.startiçin, sunucu tarafı ortamını environment özelliğinde ayarlanan ortamla eşleştirmek akıllıca olacaktır. Aksi takdirde, sunucuda önceden oluşturma, istemci üzerindeki oluşturmadan farklı bir ortamda çalışır ve bu da rastgele etkilere neden olur. Genel ortam ayarlama yönergeleri için Blazor Web App bkz. ASP.NET Core çalışma zamanı ortamları.

Bağımsız Blazor WebAssembly:

<script src="{BLAZOR SCRIPT}" autostart="false"></script>
<script>
  if (window.location.hostname.includes("localhost")) {
    Blazor.start({
      environment: "Staging"
    });
  } else {
    Blazor.start();
  }
</script>

Yukarıdaki örnekte, {BLAZOR SCRIPT} yer tutucusu Blazor betik yolu ve dosya adıdır. Betiğin konumu için bkz. ASP.NET Core Blazor proje yapısı.

environment özelliğinin kullanılması, Blazor-Environment üst bilgisitarafından ayarlanan ortamı geçersiz kılar.

Önceki yaklaşım, istemcinin ortamını Blazor-Environment başlığının değerini değiştirmeden ayarlar ve genel Etkileşimli WebAssembly işlemeyi benimseyen bir Blazor Web App için sunucu projesinin başlangıç ortamının konsol kayıtlarını değiştirmez.

Ortamı tek başına Blazor WebAssembly bir uygulamada veya .Client bir Blazor Web App projesinde konsola günlüğe kaydetmek için, ProgramWebAssemblyHost ile oluşturulduktan sonra, aşağıdaki C# kodunu WebAssemblyHostBuilder.CreateDefault dosyasına, projeyi derleyen ve çalıştıran satırdan önce (await builder.Build().RunAsync();), yerleştirin.

Console.WriteLine(
    $"Client Hosting Environment: {builder.HostEnvironment.Environment}");

Blazor başlangıç hakkında daha fazla bilgi için bkz. ASP.NET Core Blazor başlangıç.

üst bilgi aracılığıyla istemci tarafı ortamını ayarlayın

Blazor WebAssembly uygulamalar ortamı Blazor-Environment başlığı üzerinden ayarlayabilir. Özellikle, yanıt üst bilgisinin _framework/blazor.boot.json dosyasında ayarlanması gerekir, ancak diğer Blazor dosya istekleri veya Blazor dağıtımının tamamı için dosya sunucusu yanıtlarında üst bilgiyi ayarlamanın bir zararı yoktur.

Blazor çerçevesi üst bilgi adını karma harf durumunda kebap biçimiyle verir (Blazor-Environment), ancak tümü küçük harf veya tümü büyük harf kebap biçimi kullanabilirsiniz (blazor-environment, BLAZOR-ENVIRONMENT).

Blazor'nin yerleşik geliştirme sunucusuyla yerel geliştirme çalıştırmaları için, projenin Blazor-Environment dosyasındaki ASPNETCORE_ENVIRONMENT ortam değişkeninin değerini ayarlayarak Properties/launchSettings.json üst bilgisinin değerini denetleyebilirsiniz. Geliştirme sunucusuyla yerel olarak çalışırken, uygulamanın ortamını belirlemek için öncelik sırası Blazor.start yapılandırma (environment anahtar)>Blazor-Environment yanıt üst bilgisi (blazor.boot.json dosyası) >ASPNETCORE_ENVIRONMENT ortam değişkenidir (launchSettings.json). Dağıtılan bir ASPNETCORE_ENVIRONMENT uygulaması için launchSettings.json ortam değişkeni (Blazor WebAssembly) yaklaşımını kullanamazsınız. Bu teknik yalnızca uygulamanın yerel çalıştırmalarında geliştirme sunucusuyla çalışır.

IIS

Iis için aşağıdaki örnekte, yayımlanan Blazor-Environment dosyasına özel üst bilgi (web.config) eklenir. web.config dosyası, bin/Release/{TARGET FRAMEWORK}/publish yer tutucusunun hedef çerçeve olduğu {TARGET FRAMEWORK} klasöründe bulunur:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    ...
    <httpProtocol>
      <customHeaders>
        <add name="Blazor-Environment" value="Staging" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

Not

Uygulama klasörde yayımlandığında üzerine yazılmadan IIS için özel web.config bir dosya kullanmak için bkz. publish.Blazor WebAssembly

Nginx

Nginx sunucuları için add_headerngx_http_headers_module yönergesini kullanın:

http {
    server {
        ...
        location / {
            ...
            add_header Blazor-Environment "Staging";
        }
    }
}

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

Apache

Apache sunucuları için Header modülündeki mod_headers yönergesini kullanın:

<VirtualHost *:80>
    ...
    Header set Blazor-Environment "Staging"
    ...
</VirtualHost>

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

Azure App Service ortamını ayarlama

Blazor WebAssembly bağımsız bir uygulama için, başlatma yapılandırması veya Blazor-Environment üst bilgisiüzerinden ortamı el ile ayarlayabilirsiniz.

Sunucu tarafı bir uygulama için Ortamı Azure'daki bir ASPNETCORE_ENVIRONMENT uygulama ayarı aracılığıyla ayarlayın:

  1. Uygulama ayarları dosya adlarındaki ortam segmentlerinin, ortam adıyla büyük/küçük harf uyumunu tam olarak sağladığından emin olun. Örneğin, Staging ortamı için eşleşen uygulama ayarları dosya adı appsettings.Staging.json. Dosya adı appsettings.staging.json (küçük harf "s") ise, dosya bulunmaz ve dosyadaki ayarlar Staging ortamında kullanılmaz.

  2. Visual Studio dağıtımı için uygulamanın doğru dağıtım yuvasına dağıtıldığını onaylayın. BlazorAzureAppSampleadlı bir uygulama için, uygulama Staging dağıtım yuvasına dağıtılır.

  3. Ortamın dağıtım yuvası için Azure portalında ortamı ASPNETCORE_ENVIRONMENT uygulama ayarıyla ayarlayın. Bir BlazorAzureAppSampleuygulaması için hazırlık aşaması App Service Yuvası BlazorAzureAppSample/Stagingolarak adlandırılır. Staging yuvasının yapılandırması için ASPNETCORE_ENVIRONMENT için Stagingdeğerine sahip bir uygulama ayarı oluşturun. Dağıtım yuvası ayarı için etkinleştirilmiştir.

Tarayıcıda istendiğinde, BlazorAzureAppSample/Staging uygulaması Stagingkonumundaki https://blazorazureappsample-staging.azurewebsites.net ortamında yüklenir.

Uygulama tarayıcıda yüklendiğinde, blazor.boot.json için yanıt üst bilgisi koleksiyonu Blazor-Environment üst bilgi değerinin Stagingolduğunu gösterir.

Uygulama, appsettings.{ENVIRONMENT}.json yer tutucusunun uygulamanın ortamı olduğu {ENVIRONMENT} dosyasındaki ayarları yükler. Yukarıdaki örnekte, appsettings.Staging.json dosyasındaki ayarlar yüklenir.

Blazor WebAssembly uygulamasında ortamı okuma

IWebAssemblyHostEnvironment ekleyerek ve Environment özelliğini okuyarak uygulamanın ortamını bir bileşende edinin.

ReadEnvironment.razor:

@page "/read-environment"
@using Microsoft.AspNetCore.Components.WebAssembly.Hosting
@inject IWebAssemblyHostEnvironment Env

<h1>Environment example</h1>

<p>Environment: @Env.Environment</p>

Blazor Web App'dan ortamı istemci tarafında oku

Bir bileşen veya uygulama için prerendering'in devre dışı bırakılmadığını varsayarsak, .Client projesindeki bir bileşen sunucuda önceden oluşturulur. Sunucunun kayıtlı bir IWebAssemblyHostEnvironment hizmeti olmadığından, hizmeti eklemek ve sunucu hazırlama sırasında hizmet uygulamasının ana bilgisayar ortamı uzantısı yöntemlerini ve özelliklerini kullanmak mümkün değildir. Hizmeti Etkileşimli WebAssembly veya Etkileşimli Otomatik bileşene eklemek aşağıdaki çalışma zamanı hatasına neden olur:

There is no registered service of type 'Microsoft.AspNetCore.Components.WebAssembly.Hosting.IWebAssemblyHostEnvironment'.

Bu sorunu gidermek için sunucuda IWebAssemblyHostEnvironment için özel bir hizmet uygulaması oluşturun. Daha fazla bilgi edinmek ve örnek bir uygulama için, belgelerde daha sonra görünen Prerendering makalesinin sunucu bölümündeki Özel hizmet uygulaması bölümüne Blazor bakın.

Başlatma sırasında istemci tarafı ortamını oku

Başlatma sırasında WebAssemblyHostBuilder, IWebAssemblyHostEnvironment özelliği aracılığıyla HostEnvironment'i, konak oluşturucu kodunda ortama özgü mantığı etkinleştiren şekilde kullanıma sunar.

Program dosyasında:

if (builder.HostEnvironment.Environment == "Custom")
{
    ...
};

WebAssemblyHostEnvironmentExtensions aracılığıyla sağlanan aşağıdaki kolaylık uzantısı yöntemleri, Development, Production, Stagingve özel ortam adları için geçerli ortamı denetlemeye izin verir:

Program dosyasında:

if (builder.HostEnvironment.IsStaging())
{
    ...
};

if (builder.HostEnvironment.IsEnvironment("Custom"))
{
    ...
};

IWebAssemblyHostEnvironment.BaseAddress özelliği, NavigationManager hizmeti kullanılamadığında başlatma sırasında kullanılabilir.

Ek kaynaklar