无法从 RCL 引用静态文件
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
是入口点。我正在尝试从 Components RCL 引用 main.js 文件,方法是:
<scipt src="_content/Components/js/main.js"></script> <<--- NOT WORKING
但它不起作用 - 我收到 404。我基于 this and more specifically this。
请注意,通过执行此操作,我可以在客户端项目中引用 main.js 文件
<script src="js/main.js"></script> <<<--- WORKS
但是使用 _content/{library_name}/...
约定在 RCL 中引用静态文件不起作用。
有什么问题?
根据 Microsoft documentation,您必须在 bootstrap 文件中包含 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 是我所缺少的。我不确定我是否只是在文档中遗漏了它,或者他们是否最近更新了它以包含它,但无论哪种方式都为我修复了它。
我正在开发一个 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 and more specifically this。
请注意,通过执行此操作,我可以在客户端项目中引用 main.js 文件
<script src="js/main.js"></script> <<<--- WORKS
但是使用 _content/{library_name}/...
约定在 RCL 中引用静态文件不起作用。
有什么问题?
根据 Microsoft documentation,您必须在 bootstrap 文件中包含 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 是我所缺少的。我不确定我是否只是在文档中遗漏了它,或者他们是否最近更新了它以包含它,但无论哪种方式都为我修复了它。