![](/img/trans.png)
[英]Can't reference static method defined in plugin from an client application
[英]Can't Reference Static Files From RCL
我正在開發一個 Blazor 項目,我基本上有 3 個項目: Client
、 Server
和Components
。 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.