簡體   English   中英

Blazor 服務器 - static 文件在非 DEV 環境中不鏈接

[英]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 作為示例(但任何 static 文件參考似乎都有這個問題):

新建 Blazor 服務器項目(dotnet new blazorserver)

  1. 添加所有必要的 Blazored / Toast 元素,包括演示 toast 消息的代碼
  2. 測試 toast 是否正常工作 將 launchSettings.json ASPNETCORE_ENVIRONMENT 更改為暫存、生產或開發以外的任何內容
  3. 再次運行程序(使用 ISS Express 本地調試),注意到 css 格式不正確
  4. 更改調試設置以改用 Kestrel(將 IIS Express 下拉菜單更改為 BlazorApp1 或類似的)
  5. 注意紅隼,css 工作正常

我錯過了什么可以讓這個引用在其他環境中工作?

當應用程序發布時,從 Razor Class 庫中使用 static 資產即可使用。 您只需像您一樣通過<link href="..." />包含 static 內容。

但是,當從構建 output(dotnet run)或通過 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>();
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM