【问题标题】:How to read JSON file in a class library from Blazor WebAssembly如何从 Blazor WebAssembly 读取类库中的 JSON 文件
【发布时间】:2021-09-22 12:50:57
【问题描述】:

我正在尝试读取我的 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:提供了无效的请求 URI。 请求 URI 必须是绝对 URI 或 BaseAddress 必须是 设置。

基于 blazor wasm 模板,它从应用程序的 wwwroot 文件夹中读取天气预报 JSON 文件。我正在尝试做同样的事情,但使用类库中的 wwwroot 文件夹。我似乎无法找到如何实现这一目标的指导。非常感谢任何帮助。

【问题讨论】:

    标签: blazor-webassembly


    【解决方案1】:

    主要错误是

    请求 URI 必须是绝对 URI 或必须设置 BaseAddress。

    这很奇怪,通常 HttpClient 在 Program 或 Startup 中配置正确。

    那么:你的Http 来自哪里,你在启动代码中做了什么改动? 你应该有类似的东西

    builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
    

    【讨论】:

    • 那是我的问题。当我对其他问题进行故障排除时,我已经注释掉了 HttpClient 配置,而忘记将其设置回来。谢谢!
    猜你喜欢
    • 2020-11-14
    • 2020-11-23
    • 2020-12-28
    • 2021-09-22
    • 2019-06-09
    • 2020-10-24
    • 1970-01-01
    • 2020-08-21
    • 2020-10-18
    相关资源
    最近更新 更多