我已经创建
BlazorServerApp
)(。Net Core 3.1)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
也就是说,Web应用程序在指定路径上找不到这样的资源。
任何人都可以解释为什么会发生这种情况,以及需要做些什么才能使应用程序访问其他从属项目(在我的情况下是net标准类库)中的静态资源(例如js或css)吗?
答案 0 :(得分:1)
打开组件项目属性,然后转到“包”选项卡。
您必须在Package ID中设置一个值
然后您使用此ID指定路径
<script src="_content/package_id/test.js"></script>