如何从 Blazor WebAssembly 读取 class 库中的 JSON 文件
How to read JSON file in a class library from Blazor WebAssembly
我正在尝试读取驻留在我的剃须刀 class 库中的 JSON 文件。我已将它添加到库中用于静态资产的 wwwroot 文件夹中,类似于访问静态资产(css、js 文件)的指南。
然后我尝试在我的 Blazor 组件的 OnInitializedAsync() 事件中读取此文件,如下所示:
protected async override Task OnInitializedAsync()
{
MenuItems = await Http.GetFromJsonAsync<List<MenuItem>>("_content/[LibraryName]/sitemap.json");
await base.OnInitializedAsync();
}
我也试过没有 _content 部分:
protected async override Task OnInitializedAsync()
{
MenuItems = await Http.GetFromJsonAsync<List<MenuItem>>("sitemap.json");
await base.OnInitializedAsync();
}
两次调用都以以下异常结束:
System.InvalidOperationException: An invalid request URI was provided.
The request URI must either be an absolute URI or BaseAddress must be
set.
基于 blazor wasm 模板,它从应用程序中的 wwwroot 文件夹中读取天气预报 JSON 文件。我正在尝试做同样的事情,但使用 class 库中的 wwwroot 文件夹。我似乎无法找到有关如何实现这一目标的指导。非常感谢任何帮助。
主要错误是
The request URI must either be an absolute URI or BaseAddress must be set.
这很奇怪,通常 HttpClient 在程序或启动中配置正确。
所以:你的 Http
是从哪里来的,你在启动代码中做了什么更改?
你应该有类似
的东西
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
我正在尝试读取驻留在我的剃须刀 class 库中的 JSON 文件。我已将它添加到库中用于静态资产的 wwwroot 文件夹中,类似于访问静态资产(css、js 文件)的指南。
然后我尝试在我的 Blazor 组件的 OnInitializedAsync() 事件中读取此文件,如下所示:
protected async override Task OnInitializedAsync()
{
MenuItems = await Http.GetFromJsonAsync<List<MenuItem>>("_content/[LibraryName]/sitemap.json");
await base.OnInitializedAsync();
}
我也试过没有 _content 部分:
protected async override Task OnInitializedAsync()
{
MenuItems = await Http.GetFromJsonAsync<List<MenuItem>>("sitemap.json");
await base.OnInitializedAsync();
}
两次调用都以以下异常结束:
System.InvalidOperationException: An invalid request URI was provided. The request URI must either be an absolute URI or BaseAddress must be set.
基于 blazor wasm 模板,它从应用程序中的 wwwroot 文件夹中读取天气预报 JSON 文件。我正在尝试做同样的事情,但使用 class 库中的 wwwroot 文件夹。我似乎无法找到有关如何实现这一目标的指导。非常感谢任何帮助。
主要错误是
The request URI must either be an absolute URI or BaseAddress must be set.
这很奇怪,通常 HttpClient 在程序或启动中配置正确。
所以:你的 Http
是从哪里来的,你在启动代码中做了什么更改?
你应该有类似
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });