blazor-webassembly - 如何从 Blazor WebAssembly 读取类库中的 JSON 文件

标签 blazor-webassembly

我正在尝试读取驻留在我的 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/

相关文章:

c# - Blazor WebAssembly 应用程序/身份验证/注销导致 "There was an error trying to log you out: ' '"失败

blazor - 通知 EditContext 该字段已更改以进行 Blazor 验证

async-await - Blazor 启动错误 : System. Threading.SynchronizationLockException:无法等待此运行时上的监视器

c# - 使用 C#(无 JavaScript)将 Blazor WebAssembly 文件直接分块到 Azure Blob 存储

azure - 为什么 Blazor 应用程序中的 XML 验证在本地主机上和作为 Azure 静态 Web 应用程序给出不同的消息?

c# - 在 Blazor Web 程序集中 token 过期时间自动注销

Blazor wasm - 调试 - 无法查看任何变量的值

signalr - Blazor WebAssembly SignalR HubConnection 在重新加载时导致 javascript 错误

visual-studio-2019 - Blazor Web组装应用程序.Net Core托管: publish runtime error

c# - 检测导航事件 blazor webassembly