Что такое основные статические веб-ресурсы ASP.NET? - PullRequest
1 голос
/ 17 октября 2019

В HostBuilder.ConfigureWebHostDefaults() существует много скрытой магии (которая в итоге вызывает ConfigureWebDefaults). Я хотел бы понять это лучше, поскольку нет документации, которую я могу найти об этом.

Этот код , кажется, загружает некоторые статические файлы. Что такое статические веб-ресурсы и зачем они нам нужны? Это связано с встраиванием статических ресурсов в библиотеки для Blazor?

builder.ConfigureAppConfiguration((ctx, cb) =>
{
    if (ctx.HostingEnvironment.IsDevelopment())
    {
        StaticWebAssetsLoader.UseStaticWebAssets(ctx.HostingEnvironment, ctx.Configuration);
    }
});

1 Ответ

4 голосов
/ 21 октября 2019

Статические веб-ресурсы - это статические файлы, доступные из Razor Class Library (RCL) :

Для RCL могут потребоваться сопутствующие статические активы, на которые может ссылаться приложение-потребительиз RCL. ASP.NET Core позволяет создавать списки RCL, включающие статические ресурсы, доступные приложению-потребителю.

UseStaticWebAssets добавляет дополнительных поставщиков файлов (экземпляры StaticWebAssetsFileProvider), используя файл манифеста ({environment.ApplicationName}.StaticWebAssets.xml, если не установлен через IConfiguration), чтобы определить список отображений от пути к базовому пути.

Например, при использовании RCL интерфейса Identity UI ASP.NET файл манифеста для вашего приложения выглядит примерно так:

<StaticWebAssets Version="1.0">
    <ContentRoot BasePath="/Identity" Path="\path\to\.nuget\packages\microsoft.aspnetcore.identity.ui\3.0.0\staticwebassets\V4" />
</StaticWebAssets>

Все это заканчивается CompositeFileProvider устанавливается для IWebHostEnvironment.WebRootFileProvider. Этот составной провайдер выполняет две функции:

  1. Обрабатывает wwwroot/ статические файлы как обычно (при условии конфигурации по умолчанию).
  2. Делегирует любые файлы, запрошенные из wwwroot/Identity, в извлеченный пакет NuGetпапка содержимого для пользовательского интерфейса Identity.

Как показывает фрагмент кода из вашего вопроса, это происходит только при работе в среде Development. Когда ваше приложение опубликовано , соответствующие файлы копируются в папку wwwroot, как если бы они были частью вашего приложения.

...