我正在尝试读取驻留在我的 razor 类库中的 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 文件。我正在尝试做同样的事情,但使用类库中的 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) });
关于blazor-webassembly - 如何从 Blazor WebAssembly 读取类库中的 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69284619/