Blazor 服务器 - 静态文件在非开发环境中不 link
Blazor Server - static files don't link in non-DEV environments
在标准的 Blazor 服务器应用程序中,除了开发环境之外,_content 文件夹项目没有被正确引用。例如,此引用在任何非开发环境中都会失败:
来自 _Host.cshtml:
<link href="_content/Blazored.Typeahead/blazored-typeahead.css" rel="stylesheet" />
Repro,以 Blazored-toast lib 为例(但任何静态文件引用似乎都有这个问题):
创建一个新的 Blazor Server 项目 (dotnet new blazorserver)
- 添加所有必要的 Blazored / Toast 元素,包括要演示的代码
敬酒消息
- 测试 toast 是否正常工作 Change
launchSettings.json ASPNETCORE_ENVIRONMENT 到暂存、生产、
或开发以外的任何其他内容
- 运行 再次编程(使用ISS
express local debug),注意css格式不正确
- 更改调试设置以改用 Kestrel(更改 IIS Express
下拉到 BlazorApp1 或类似的)
- 红隼通知,css是
工作正常
我错过了什么能让这个引用在其他环境中工作?
使用 Razor 中的静态资产 Class 库在发布应用程序时开箱即用。您只需像以前一样通过 <link href="..." />
包含静态内容。
但是,当 运行从构建输出 (dotnet 运行) 或通过 Visual Studio 中的 F5 连接应用程序时,您必须确保为给定的启用了 StaticWebAsset 功能环境。
默认仅对开发环境启用。您可以通过确保在 Program.CreateHostBuilder
.
中调用 UseStaticFiles
并调用 UseStaticWebAssets
来无条件地打开该功能
因此,请确保您使用的应用程序具有:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
在你的Program.cs中你应该
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStaticWebAssets();
webBuilder.UseStartup<Startup>();
});
在标准的 Blazor 服务器应用程序中,除了开发环境之外,_content 文件夹项目没有被正确引用。例如,此引用在任何非开发环境中都会失败:
来自 _Host.cshtml:
<link href="_content/Blazored.Typeahead/blazored-typeahead.css" rel="stylesheet" />
Repro,以 Blazored-toast lib 为例(但任何静态文件引用似乎都有这个问题):
创建一个新的 Blazor Server 项目 (dotnet new blazorserver)
- 添加所有必要的 Blazored / Toast 元素,包括要演示的代码 敬酒消息
- 测试 toast 是否正常工作 Change launchSettings.json ASPNETCORE_ENVIRONMENT 到暂存、生产、 或开发以外的任何其他内容
- 运行 再次编程(使用ISS express local debug),注意css格式不正确
- 更改调试设置以改用 Kestrel(更改 IIS Express 下拉到 BlazorApp1 或类似的)
- 红隼通知,css是 工作正常
我错过了什么能让这个引用在其他环境中工作?
使用 Razor 中的静态资产 Class 库在发布应用程序时开箱即用。您只需像以前一样通过 <link href="..." />
包含静态内容。
但是,当 运行从构建输出 (dotnet 运行) 或通过 Visual Studio 中的 F5 连接应用程序时,您必须确保为给定的启用了 StaticWebAsset 功能环境。
默认仅对开发环境启用。您可以通过确保在 Program.CreateHostBuilder
.
UseStaticFiles
并调用 UseStaticWebAssets
来无条件地打开该功能
因此,请确保您使用的应用程序具有:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseStaticFiles();
...
}
在你的Program.cs中你应该
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStaticWebAssets();
webBuilder.UseStartup<Startup>();
});