如何解决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
也就是说,Web应用程序在指定路径上找不到这样的资源。
任何人都可以解释为什么会发生这种情况,以及需要做些什么才能使应用程序访问其他从属项目(在我的情况下是net标准类库)中的静态资源(例如js或css)吗?
解决方法
打开组件项目属性,然后转到“包”选项卡。
您必须在Package ID中设置一个值
然后您使用此ID指定路径
<script src="_content/package_id/test.js"></script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。