簡體   English   中英

Blazor wasm:添加自定義環境不起作用

[英]Blazor wasm: adding custom environment does not work

編輯:我重寫了帖子以提供更多信息,並添加了指向 github 示例項目的鏈接。

我正在嘗試支持一個額外的環境來測試托管的 wasm 應用程序。 該解決方案有 2 個項目,我將新環境命名為Express 順便說一句,這是一個重現我面臨的問題的演示項目。

在基於 Blazor wasm 托管模板創建新項目后,我首先將 2 個新的 html 頁面添加到 blazor wwwroot 的文件夾(有 3 個 HTML 文件,每個文件用於不同的環境):

每個環境 3 個 html 文件

在這個簡單的演示中,文件之間的唯一區別在於 blazor 的啟動方式。 例如,下面是用於在index.express.html文件中加載 blazor 的代碼:

<script src="_framework/blazor.webassembly.js" autostart="false"></script>
<script>
    Blazor.start({
        environment: "Express"
    });
</script>

在真實的應用程序中,還有其他差異(例如: <base>元素),但現在,這對於展示問題已經綽綽有余了。

在服務器端,我添加了一個新的appsettings文件:

服務器項目上的 Appsettings 文件

我還更新了lauchSettings.json服務器文件,以便將ASPNETCORE_ENVIRONMENT變量設置為Express

  "BlazorHostedDemo.Server": {
    "commandName": "Project",
    "dotnetRunMessages": true,
    "launchBrowser": true,
    "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
    "applicationUrl": "https://localhost:7261;http://localhost:5261",
    "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Express" 
    }
  },

我的印象是這應該足以讓 Kestrel 使用 Express 環境。

我還更新了用於加載 blazor 應用程序的默認文件名,使其取決於配置文件:

var filename = app.Environment.IsDevelopment()
                   ? "index.development.html"
                   : app.Environment.IsEnvironment("Express")
                       ? "index.express.html"
                       : "index.html";

app.MapFallbackToFile(filename);

完成這些更改后,我希望 Kestrel 使用Express環境並加載index.express.html文件,但這並沒有發生。 如您所見,Kestrel 使用的是“正確”的環境:

Kestrell 使用的 Express 環境

但是,紅隼為默認頁面( index.express.html文件)返回 404:

Kestrel/ASP.NET Core 不返回回退 HTML 文件

順便說一句,這不是文件名問題或丟失文件問題。 例如,如果我在 express 環境中使用默認的 index.html,我仍然會得到相同的結果:

app.MapFallbackToFile("index.html");

我還注意到,如果我將環境設置為Development (通過更改launchSettings.json文件),我可以毫無問題地提供任何 HTML 文件。

我不確定當您在 VS 上按 F5 時會發生什么。 我預計 wwwroot 文件夾和客戶端 dll 將被復制到服務器項目的輸出文件夾中,但這並沒有發生。相反,靜態中間件似乎配置為從客戶端的 wwwroot 項目返回 HTML 文件時環境設置為Development (當我更改環境時沒有這樣做)。

我嘗試將自定義StaticFileOptions對象傳遞給使用物理客戶端的 wwwroot 文件夾的MappFallbackToFile方法。 這樣做時,我確實最終提供了 HTML 文件,但似乎無法找到 blazo js 文件和自動生成的 css 文件(帶有項目名稱)。

那么,誰能告訴我我在這里做錯了什么? 如何為可在 VS 2022 中使用的 Blazor 應用程序配置新環境?

所以,如果你想使用自定義環境,你需要調用這個github issue中提到的UseStaticWebAssets

暫無
暫無

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

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