微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Blazor服务器应用程序无法访问子项目的静态内容

如何解决Blazor服务器应用程序无法访问子项目的静态内容

我已经创建

  • 一个Blazor Server应用(BlazorServerApp)(。Net Core 3.1)
  • .NET标准类库(MyClassLibrary

我已经将MyClassLibrary项目添加BlazorServerApp的依赖项中。然后,我将wwwroot文件添加MyClassLibrary项目中,并将test.js文件添加到该文件夹​​中。

我已经如下编辑MyClassLibrary项目文件

<Project Sdk="Microsoft.NET.Sdk">    
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AssemblyName>MyClassLibrary</AssemblyName>
    <RootNamespace>MyClassLibrary</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <EmbeddedResource Include="wwwroot\**\*.js" LogicalName="blazor:js:%(RecursiveDir)%(Filename)%(Extension)" />
  </ItemGroup>    
</Project>

Blazor Web应用程序在“启动”中调用UseStaticFiles方法,该方法可以提供静态文件

public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapBlazorHub();
        endpoints.MapFallbackToPage("/_Host");
    });
}

我在test.js(BlazorServerApp项目)中将<script src="_content/MyClassLibrary/test.js"></script>添加_Host.cshtml

@page "/"
@namespace BlazorServerApp.Pages
@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers
@{
    Layout = null;
}

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="utf-8" />
    <Meta name="viewport" content="width=device-width,initial-scale=1.0" />
    <title>BlazorServerApp</title>
    <base href="~/" />
    <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" />
    <link href="css/site.css" rel="stylesheet" />
</head>
<body>
    <app>
        <component type="typeof(App)" render-mode="ServerPrerendered" />
    </app>

    <div id="blazor-error-ui">
        <environment include="Staging,Production">
            An error has occurred. This application may no longer respond until reloaded.
        </environment>
        <environment include="Development">
            An unhandled exception has occurred. See browser dev tools for details.
        </environment>
        <a href="" class="reload">Reload</a>
        <a class="dismiss">?</a>
    </div>

    <script src="_framework/blazor.server.js"></script>
    <script src="_content/MyClassLibrary/test.js"></script>
</body>
</html>

但是,当我运行BlazorServerApp项目时,该错误出现在浏览器中:

GET https://localhost:5001/_content/MyClassLibrary/test.js net::ERR_ABORTED 404

Developer Console of the Browser

也就是说,Web应用程序在指定路径上找不到这样的资源。

任何人都可以解释为什么会发生这种情况,以及需要做些什么才能使应用程序访问其他从属项目(在我的情况下是net标准类库)中的静态资源(例如js或css)吗?

解决方法

打开组件项目属性,然后转到“包”选项卡。

您必须在Package ID中设置一个值

然后您使用此ID指定路径

<script src="_content/package_id/test.js"></script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?