无法从RCL引用静态文件 - javascript

我正在开发Blazor项目,基本上有3个项目:ClientServerComponentsComponents是一个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。

请注意,通过执行此操作,我可以引用Client项目中的main.js文件。

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

但是,使用_content/{library_name}/...约定在RCL中引用静态文件不起作用。

有什么问题?

参考方案

对于Microsoft documentation,必须在消费项目的引导文件中包含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是我所缺少的。我不确定是否只是在文档中错过了这些内容,还是不确定他们是否最近对其进行了更新以包括在内,但是无论哪种方式都可以为我解决。

如何使用JavaScript访问嵌入式ASP.NET GlobalResources? - javascript

我正在开发一个遗留的ASP.NET项目,该项目正试图缓慢地进行调整,但是如果没有像巧克力手指屋一样塌陷的情况,我将无法进行重大更改。我试图为此找到解决方案,但由于术语的特定混合(“ javascript”,“ embedded”和/或“ resource”只是为我提供了有关如何嵌入.js文件的信息,而失败了)。 。),这可能是一种怪异的处理方式。该项目将Ap…

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…

从ASP.NET MVC中的AngularJS控制器加载数据而无需加载整个页面 - javascript

这是我的动作: [HttpPost, ValidateAntiForgeryToken] public ActionResult GetData() { //get data from DB and populate model with data return View("Data", model); } 该视图是: @model UI…

将Windows窗体屏幕截图应用程序转换为ASP.NET - javascript

我是一位C#ASP.NET开发人员,他试图创建一个Web应用程序,允许用户指定屏幕区域并对其进行屏幕捕获。我发现了很多javascript和jquery解决方案,但我认为它们太复杂了,我缺乏与它们一起使用的javascript技能。我在MSDN上找到了以下代码:using System; using System.Windows.Forms; using S…