Blazor: Statik web varlıkları için doğrulama mantığı güncelleştirildi

ASP.NET Core 3.1 ve Blazor WebAssembly 3.2'deki statik web varlıkları için çakışma doğrulamasında bir sorun oluştu. Sorun:

  • Razor Sınıf Kitaplıkları (RCL) ve Blazor WebAssembly uygulamalarından konak varlıkları ve varlıklar arasında düzgün çakışma algılama engellendi.
  • Varsayılan olarak RCL'lerdeki statik web varlıkları ön ekin altında _content/$(PackageId) sunulduğundan, blazor WebAssembly uygulamalarını çoğunlukla etkiler.

Sürüm kullanıma sunulmuştur

5.0

Eski davranış

Geliştirme sırasında RCL'nin statik web varlıkları, aynı konak yolundaki konak proje varlıklarıyla sessizce geçersiz kılınabilir. /folder/file.txt konumunda sunulacak statik bir web varlığı tanımlayan bir RCL düşünün. Konak wwwroot/folder/file.txt adresine bir dosya yerleştirmişse, sunucudaki dosya RCL veya Blazor WebAssembly uygulamasında sessizce dosyanın üzerine geçmiştir.

Yeni davranış

ASP.NET Core bu sorunun ne zaman oluştuğuna doğru şekilde algılar. Uygun eylemi gerçekleştirebilmeniz için sizi, kullanıcıyı çakışma hakkında bilgilendirmektedir.

Değişiklik nedeni

Statik web varlıklarının projenin wwwroot konağındaki dosyalar tarafından geçersiz kılınabilir olması amaçlanmamıştır. Bu dosyaların geçersiz kılınmasına izin vermek, tanılaması zor hatalara neden olabilir. Sonuç, yayımlanan uygulamalarda tanımsız davranış değişiklikleri olabilir.

Varsayılan olarak, RCL dosyasının konak üzerindeki bir dosyayla çakışması için bir neden yoktur. RCL dosyalarına ön ek olarak eklenir _content/${PackageId}. Blazor WebAssembly dosyaları konak URL alanının köküne yerleştirilir ve bu da çakışmaları kolaylaştırır. Örneğin Blazor WebAssembly uygulamaları, konağın wwwroot klasörüne de ekleyebileceği bir favicon.ico dosyası içerir.

Çakışmanın kaynağı bir RCL dosyasıysa, bu genellikle kodun kitaplıktan projelerin wwwroot klasörüne varlık kopyaladığınız anlamına gelir. Dosyaları kopyalamak için kod yazmak, statik web varlıklarının birincil hedefini alt eder. Bu hedef, içerik yeni bir derleme tetiklemeden güncelleştirildiğinde tarayıcıda güncelleştirmeleri almak için temeldir.

Bu davranışı korumayı ve dosyayı konakta korumayı seçebilirsiniz. Bunu yapmak için, dosyayı özel bir MSBuild hedefi olan statik web varlıkları listesinden kaldırın.

RCL dosyasını veya konak projesinin dosyası yerine Blazor WebAssembly uygulamasının dosyasını kullanmak için, dosyayı konak projesinden kaldırın.

Etkilenen API’ler

Hiçbiri