Har*_*rry 9 blazor blazor-server-side
也许只是尝试一下这个例子:
https://github.com/HTD/BlazorProfiles
这是一个演示 Blazor 应用程序(默认)。我创建了 2 个自定义应用程序配置文件:开发和生产。只需在 Visual Studio 中按 F5 键即可调试两者。
然后我创建了一个虚拟 Razor 组件库并将其命名为 RCL。我将其作为主项目的依赖项。在我的虚拟 RCL 中,wwwroot我在目录中添加了extra.css文件。该文件的作用是将背景颜色更改为浅绿色。如果发生这种情况 - 则意味着文件已被加载。如果背景保持灰色/白色,则不会加载。
这是_Host.cshtml加载 CSS 的片段:
<link href="_content/RCL/extra.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)
尝试运行它。有用。但是,有一个条件:
ASPNETCORE_ENVIRONMENT环境变量必须设置为“Development”。
如果您测试Production配置文件(或将环境变量更改为“Production”),然后运行应用程序 - 该extra.css文件将不会被加载。
背景没有变成绿色,所以有问题。为什么会发生这种情况?这是 Visual Studio 中的错误吗?
如果您想知道为什么我需要设置此环境变量:它允许加载额外的
appsettings.[ASPNETCORE_ENVIRONMENT].json
文件。所以我可以为我的应用程序设置不同的配置。我需要使用不同的配置测试我的应用程序。现在我只能在 Visual Studio 中使用“开发”配置来调试它。当我将配置更改为其他任何内容时,我无法运行我的应用程序,因为它无法从库中加载组件所需的必要 JavaScript 文件。
因此,预期的行为:无论我在“ASPNETCORE_ENVIRONMENT”中放入什么 - 来自 RCL 的文件应该始终加载。为什么他们不应该呢?
实际行为:使用不同的配置(配置文件)会中断 Razor 组件库加载。
JHB*_*ius 10
在 ASP.NET core github issues 中找到了它。它实际上在文档中提到过。
您需要在虚拟主机中启用静态网络资产:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStaticWebAssets(); // <----
webBuilder.UseStartup<Startup>();
});
Run Code Online (Sandbox Code Playgroud)
编辑:注意文档中的评论
从发布的输出 (dotnetpublish) 运行应用程序时,不需要调用 UseStaticWebAssets。
今天这让我困惑了几个小时,直到我找到了公认的答案,这让我找到了文档。对于NET 6.0应用程序来说,情况略有变化:
...开发环境中默认启用静态 Web 资源。要在从构建输出运行时支持其他环境中的资源,请在主机构建器上调用 UseStaticWebAssets
Program.cs:
builder.WebHost.UseWebRoot("wwwroot");
builder.WebHost.UseStaticWebAssets();
Run Code Online (Sandbox Code Playgroud)
然后你还需要打电话
app.UseStaticFiles();
Run Code Online (Sandbox Code Playgroud)
app建造完成后进一步向下var app = builder.Build();
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |