Blazor Server-静态文件在非DEV环境中不链接

时间:2019-11-14 17:48:46

标签: blazor blazor-server-side

在标准的Blazor服务器应用程序中,似乎除开发环境以外的任何内容都未正确引用_content文件夹项。例如,此引用在任何非开发环境中均失败:

来自_Host.cshtml:

hello my name is
slim shady 

对于Repro,以Blazored-toast lib为例(但任何静态文件引用似乎都存在此问题):

创建一个新的Blazor Server项目(新的dotnet blazorserver)

  1. 添加所有必需的Blazored / Toast元素,包括要演示的代码 祝酒消息
  2. 测试吐司是否正常工作更改 launchSettings.json ASPNETCORE_ENVIRONMENT到暂存,生产, 或开发以外的任何内容
  3. 再次运行程序(使用ISS Express本地调试),并注意CSS格式不正确
  4. 更改调试设置以改为使用Kestrel(更改IIS Express) 下拉至BlazorApp1或类似文件)
  5. 关于茶est的通知,css是 工作正常

我缺少什么可以使该引用在其他环境中工作?

1 个答案:

答案 0 :(得分:3)

发布应用程序时,使用Razor类库中的静态资产即可立即使用。您只需像以前一样通过<link href="..." />包含静态内容即可。

但是,从构建输出(dotnet运行)或通过Visual Studio中的F5运行应用程序时,必须确保为给定环境启用了StaticWebAsset功能。

默认情况下仅在开发环境中启用它。您可以通过确保调用UseStaticFiles并在UseStaticWebAssets中调用Program.CreateHostBuilder来无条件打开该功能。

因此,请确保您使用的应用具有:

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>();
        });