我正在开发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
是入口点。我正在尝试通过以下方式从 Components RCL中引用main.js文件:
<scipt src="_content/Components/js/main.js"></script> <<--- NOT WORKING
但是它不起作用-我得到了404。我将其基于this,更具体地说是this。
请注意,通过执行此操作,我可以在Client项目中引用main.js文件
<script src="js/main.js"></script> <<<--- WORKS
但是不能使用_content/{library_name}/...
约定在RCL中引用静态文件。
出什么问题了?
答案 0 :(得分:2)
对于Microsoft documentation,必须在消费项目的引导文件中包含两行,以使静态文件引用起作用:
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是我所缺少的。我不确定我是否只是在文档中错过了这些内容,还是不确定他们是否最近对其进行了更新以包括在内,但是无论哪种方式都可以为我解决。