What are ASP.NET Core Static Web Assets?
HostBuilder.ConfigureWebHostDefaults()中发生了很多隐藏的魔术(最终称为ConfigureWebDefaults)。 我想更好地了解它,因为我找不到有关它的文档。
此代码似乎正在加载一些静态文件。什么是静态网络资产,为什么我们需要它们?这与将静态资产嵌入Blazor的库有关吗?
1 | builder.ConfigureAppConfiguration((ctx, cb) => |
静态Web资产是可以从Razor类库(RCL)获得的静态文件:
An RCL may require companion static assets that can be referenced by the consuming app of the RCL. ASP.NET Core allows creating RCLs that include static assets that are available to a consuming app.
UseStaticWebAssets使用清单文件(如果未通过IConfiguration进行设置,则为{environment.ApplicationName}.StaticWebAssets.xml)插入其他文件提供程序(StaticWebAssetsFileProvider的实例),以确定从路径到基本路径的映射列表。
例如,当使用ASP.NET Core Identity UI RCL时,应用程序的清单文件看起来像这样:
1 | <StaticWebAssets Version="1.0"> |
所有这些都以为IWebHostEnvironment.WebRootFileProvider设置的CompositeFileProvider结尾。该复合提供程序执行以下两项操作:
照常处理
wwwroot/静态文件(假定默认配置)。
将从
wwwroot/Identity请求的所有文件委派到Identity UI的提取的NuGet包内容文件夹。
正如您问题中的代码片段所示,这仅在Development环境中运行时才会发生。发布您的应用程序时,有问题的文件会被复制到wwwroot文件夹中,就好像它们是您应用程序的一部分一样。