Aracılığıyla paylaş


ASP.NET Core Blazor statik dosyaları

Not

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

Önemli

Bu bilgiler, ticari olarak piyasaya sürülmeden önce önemli ölçüde değiştirilebilen bir yayın öncesi ürünle ilgilidir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.

Geçerli sürüm için bu makalenin .NET 8 sürümüne bakın.

Bu makalede statik dosyalara hizmet veren uygulama yapılandırması açıklanmaktadır Blazor .

Blazor çerçeve statik dosyaları

.NET 8 öncesi sürümlerde, Blazor betik gibi Blazor çerçeve statik dosyaları Statik Dosya Ara Yazılımı aracılığıyla sunulur. .NET 8 veya sonraki sürümlerinde, Blazor çerçeve statik dosyaları uç nokta yönlendirmesi kullanılarak eşlenir ve Statik Dosya Ara Yazılımı artık kullanılmaz.

Statik Web Varlığı Proje Modu

Bu bölüm bir Blazor Web Uygulamasının .Client projesi için geçerlidir.

Web Uygulamasının Blazor projesinde .Client gerekli <StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode> ayar, statik varlık davranışlarını varsayılan değerlere geri döndürerek Blazor WebAssembly projenin barındırılan projenin bir parçası olarak davranmasını sağlar. Blazor WebAssembly SDK (Microsoft.NET.Sdk.BlazorWebAssembly), statik web varlıklarını yalnızca kitaplıktaki çıkışları kullanan bir sunucuyla "tek başına" modda çalışacak şekilde yapılandırır. Bu, uygulamanın WebAssembly bölümünün konağın mantıksal bir parçası olduğu ve daha çok kitaplık gibi davranması gereken bir Web Uygulaması için Blazor uygun değildir. Örneğin, proje stiller paketini (örneğin, BlazorSample.Client.styles.css) kullanıma sunmaz ve konağın kendi stil paketine ekleyebilmesi için konağa yalnızca proje paketini sağlar.

özelliğinin (Default) değerinin <StaticWebAssetProjectMode> değiştirilmesi veya özelliğin .Client projeden kaldırılması desteklenmez .

Statik Dosya Ara Yazılımı

Bu bölüm sunucu tarafı Blazor uygulamalar için geçerlidir.

Statik Dosya Ara Yazılımını, uygulamanın istek işleme işlem hattında arayarak UseStaticFiles istemcilere statik varlıklar sunmak üzere yapılandırın. Daha fazla bilgi için, bkz. ASP.NET Core statik dosyaları.

Ortamlarda olmayanDevelopment statik dosyalar

Bu bölüm sunucu tarafı statik dosyaları için geçerlidir.

Bir uygulamayı yerel olarak çalıştırırken, statik web varlıkları yalnızca ortamda varsayılan olarak Development etkinleştirilir. Yerel geliştirme ve test dışındaki ortamlar Development için statik dosyaları etkinleştirmek için (örneğin, Staging), dosyasında öğesini çağırın WebApplicationBuilderUseStaticWebAssetsProgram.

Uyarı

Üretim ortamında çağrılırsa proje dışında diskteki ayrı konumlardan dosyalara hizmet vermesinden dolayı, üretim ortamında özelliğin etkinleştirilmesini önlemek için tam ortamı çağırınUseStaticWebAssets. Bu bölümdeki örnek, çağırarak IsStagingortamı denetlerStaging.

if (builder.Environment.IsStaging())
{
    builder.WebHost.UseStaticWebAssets();
}

Varlıklar için Blazor WebAssembly ön ek

Bu bölüm Web Apps için Blazor geçerlidir.

Varlıkların WebAssemblyComponentsEndpointOptions.PathPrefix ön ekini gösteren yol dizesini ayarlamak için Blazor WebAssembly uç nokta seçeneğini kullanın. Yol, başvuruda bulunan Blazor WebAssembly bir uygulama projesine karşılık gelir.

endpoints.MapRazorComponents<App>()
    .AddInteractiveWebAssemblyRenderMode(options => 
        options.PathPrefix = "{PATH PREFIX}");

Yukarıdaki örnekte yer {PATH PREFIX} tutucu yol ön ekidir ve eğik çizgi (/ ) ile başlamalıdır.

Aşağıdaki örnekte yol ön eki olarak /path-prefixayarlanmıştır:

endpoints.MapRazorComponents<App>()
    .AddInteractiveWebAssemblyRenderMode(options => 
        options.PathPrefix = "/path-prefix");

Statik web varlığı temel yolu

Bu bölüm tek başına Blazor WebAssembly uygulamalar için geçerlidir.

Varsayılan olarak, uygulamayı yayımlamak, uygulamanın çerçeve dosyaları (_frameworkklasör varlıkları) dahil olmak üzere Blazor statik varlıklarını yayımlanan çıktıdaki kök yola (/) yerleştirir. <StaticWebAssetBasePath> Proje dosyasında (.csproj) belirtilen özellik, temel yolu kök olmayan bir yola ayarlar:

<PropertyGroup>
  <StaticWebAssetBasePath>{PATH}</StaticWebAssetBasePath>
</PropertyGroup>

Yukarıdaki örnekte yer {PATH} tutucu yoldur.

özelliği ayarlanmadan <StaticWebAssetBasePath> , tek başına bir uygulama konumunda /BlazorStandaloneSample/bin/Release/{TFM}/publish/wwwroot/yayımlanır.

Yukarıdaki örnekte yer {TFM} tutucu Hedef Çerçeve Takma Adıdır (örneğin, net6.0TFM).

<StaticWebAssetBasePath> Tek başına Blazor WebAssembly bir uygulamadaki özellik yayımlanan statik varlık yolunu olarak app1ayarlarsa, yayımlanan çıktıda uygulamanın kök yolu olur/app1.

Tek başına Blazor WebAssembly uygulamanın proje dosyasında (.csproj):

<PropertyGroup>
  <StaticWebAssetBasePath>app1</StaticWebAssetBasePath>
</PropertyGroup>

Yayımlanan çıktıda, tek başına Blazor WebAssembly uygulamanın yolu şeklindedir /BlazorStandaloneSample/bin/Release/{TFM}/publish/wwwroot/app1/.

Yukarıdaki örnekte yer {TFM} tutucu Hedef Çerçeve Takma Adıdır (örneğin, net6.0TFM).

Bu bölüm, tek başına Blazor WebAssembly uygulamalar ve barındırılan Blazor WebAssembly çözümler için geçerlidir.

Varsayılan olarak, uygulamayı yayımlamak, uygulamanın çerçeve dosyaları (_frameworkklasör varlıkları) dahil olmak üzere Blazor statik varlıklarını yayımlanan çıktıdaki kök yola (/) yerleştirir. <StaticWebAssetBasePath> Proje dosyasında (.csproj) belirtilen özellik, temel yolu kök olmayan bir yola ayarlar:

<PropertyGroup>
  <StaticWebAssetBasePath>{PATH}</StaticWebAssetBasePath>
</PropertyGroup>

Yukarıdaki örnekte yer {PATH} tutucu yoldur.

Özelliği ayarlanmadan, barındırılan <StaticWebAssetBasePath> bir çözümün veya tek başına bir uygulamanın istemci uygulaması aşağıdaki yollarda yayımlanır:

  • Barındırılan ServerBlazor WebAssembly çözümün projesinde: /BlazorHostedSample/Server/bin/Release/{TFM}/publish/wwwroot/
  • Tek başına Blazor WebAssembly bir uygulamada: /BlazorStandaloneSample/bin/Release/{TFM}/publish/wwwroot/

Barındırılan <StaticWebAssetBasePath>Blazor WebAssembly bir uygulamanın projesindeki Client veya tek başına Blazor WebAssembly bir uygulamadaki özelliği yayımlanan statik varlık yolunu olarak app1ayarlarsa, yayımlanan çıktıda uygulamanın kök yolu olur/app1.

Client Uygulamanın proje dosyasında (.csproj) veya tek başına Blazor WebAssembly uygulamanın proje dosyasında (.csproj):

<PropertyGroup>
  <StaticWebAssetBasePath>app1</StaticWebAssetBasePath>
</PropertyGroup>

Yayımlanan çıktıda:

  • Barındırılan Blazor WebAssembly çözüm projesindeki Server istemci uygulamasının yolu:/BlazorHostedSample/Server/bin/Release/{TFM}/publish/wwwroot/app1/
  • Tek başına Blazor WebAssembly bir uygulamanın yolu: /BlazorStandaloneSample/bin/Release/{TFM}/publish/wwwroot/app1/

<StaticWebAssetBasePath> özelliği en yaygın olarak tek bir barındırılan dağıtımda birden çok Blazor WebAssembly uygulamanın yayımlanmış statik varlıklarının yollarını denetlemek için kullanılır. Daha fazla bilgi için bkz . Birden çok barındırılan ASP.NET Core Blazor WebAssembly uygulaması. Özelliği tek başına Blazor WebAssembly uygulamalarda da etkilidir.

Yukarıdaki örneklerde yer {TFM} tutucu Hedef Çerçeve Takma Adıdır (örneğin, net6.0TFM).

Dosya eşlemeleri ve statik dosya seçenekleri

Bu bölüm sunucu tarafı statik dosyaları için geçerlidir.

ile ek dosya eşlemeleri oluşturmak veya diğerini FileExtensionContentTypeProviderStaticFileOptionsyapılandırmak için aşağıdaki yaklaşımlardan birini kullanın. Aşağıdaki örneklerde yer {EXTENSION} tutucu dosya uzantısı {CONTENT TYPE} , yer tutucu ise içerik türüdür. Aşağıdaki API'nin ad alanı şeklindedir Microsoft.AspNetCore.StaticFiles.

  • kullanarak StaticFileOptionsdosyaya Program bağımlılık ekleme (DI) aracılığıyla seçenekleri yapılandırın:

    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings["{EXTENSION}"] = "{CONTENT TYPE}";
    
    builder.Services.Configure<StaticFileOptions>(options =>
    {
        options.ContentTypeProvider = provider;
    });
    
    app.UseStaticFiles();
    
  • dosyasını StaticFileOptions doğrudan UseStaticFilesProgram dosyasına geçirin:

    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings["{EXTENSION}"] = "{CONTENT TYPE}";
    
    app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });
    

ile ek dosya eşlemeleri oluşturmak veya diğerini FileExtensionContentTypeProviderStaticFileOptionsyapılandırmak için aşağıdaki yaklaşımlardan birini kullanın. Aşağıdaki örneklerde yer {EXTENSION} tutucu dosya uzantısı {CONTENT TYPE} , yer tutucu ise içerik türüdür.

  • kullanarak StaticFileOptionsdosyaya Program bağımlılık ekleme (DI) aracılığıyla seçenekleri yapılandırın:

    using Microsoft.AspNetCore.StaticFiles;
    
    ...
    
    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings["{EXTENSION}"] = "{CONTENT TYPE}";
    
    builder.Services.Configure<StaticFileOptions>(options =>
    {
        options.ContentTypeProvider = provider;
    });
    

    Bu yaklaşım, betiği sunmak için kullanılan dosya sağlayıcısını yapılandırıyor Blazor . Özel yapılandırmanızın betiğin sunulmasını Blazor engellemediğinden emin olun. Örneğin, sağlayıcıyı ile provider.Mappings.Remove(".js")yapılandırarak JavaScript dosyaları için eşlemeyi kaldırmayın.

  • Dosyasında için UseStaticFilesProgram iki çağrı kullanın:

    • ile StaticFileOptionsilk çağrıda özel dosya sağlayıcısını yapılandırın.
    • İkinci ara yazılım, çerçeve tarafından Blazor sağlanan varsayılan statik dosyalar yapılandırmasını kullanan betiği sağlarBlazor.
    using Microsoft.AspNetCore.StaticFiles;
    
    ...
    
    var provider = new FileExtensionContentTypeProvider();
    provider.Mappings["{EXTENSION}"] = "{CONTENT TYPE}";
    
    app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });
    app.UseStaticFiles();
    
  • Özel bir Statik Dosya Ara Yazılımı yürütmek için kullanarak MapWhen hizmet _framework/blazor.server.js verme işlemini engellemeyi önleyebilirsiniz:

    app.MapWhen(ctx => !ctx.Request.Path
        .StartsWithSegments("/_framework/blazor.server.js"),
            subApp => subApp.UseStaticFiles(new StaticFileOptions() { ... }));
    

Ek kaynaklar