簡體   English   中英

無法從 RCL 引用靜態文件

[英]Can't Reference Static Files From RCL

我正在開發一個 Blazor 項目,我基本上有 3 個項目: ClientServerComponents Components是一個 RCL。 結構類似於以下內容:

Components (RCL)
-- wwwroot/
---- js/
------ main.js

Client
-- wwwroot/
---- js/
------ main.js

Server
-- Startup.cs (in Configure(IApplicationBuilder app), calling `app.UseClientSideBlazorFiles<Client.Startup>();`)
-- Pages
---- _Host.cshtml (in this file, referencing a main.js from the Components project like: <script src="_content/Components/js/main.js"></script>)

所以Server項目中的_Host.cshtml就是入口點。 我正在嘗試通過執行以下操作從組件RCL 引用 main.js 文件:

<scipt src="_content/Components/js/main.js"></script> <<--- NOT WORKING

但它不起作用 - 我得到一個 404。我基於this ,更具體地說是this

請注意,我可以通過執行此操作來引用客戶端項目中的 main.js 文件

<script src="js/main.js"></script> <<<--- WORKS

但是使用_content/{library_name}/...約定在 RCL 中引用靜態文件不起作用。

有什么問題?

根據Microsoft 文檔,您必須在消費項目的引導文件包含 2 行,以便靜態文件引用起作用:

1) Startup.cs > Configure() 方法必須包含app.UseStaticFiles();

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...

    app.UseStaticFiles(); // <<=== MUST INCLUDE THIS LINE

    ...
}

2) Program.cs > CreateHostBuilder() 方法必須包含webBuilder.UseStaticWebAssets();

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStaticWebAssets(); // <<=== MUST INCLUDE THIS LINE
                webBuilder.UseStartup<Startup>();
            });
}

#2 是我所缺少的。 我不確定我是否只是在文檔中錯過了它,或者他們最近是否更新了它以包含它,但無論哪種方式都為我修復了它。

暫無
暫無

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

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