【问题标题】:Blazor Webassembly API Call Children could not be evaluated无法评估 Blazor Webassembly API 调用子项
【发布时间】:2020-11-10 02:44:00
【问题描述】:

我正在尝试使用我的新 Blazor Webassembly 应用调用现有的 rest API,但是当我进行调用时,我总是收到错误无法评估儿童。 API 到达断点,当我单步执行它时成功返回数据,我还可以查看是否在邮递员中调用它,但是 Blazor 调用失败。我认为这可能是类不匹配的问题,但是 TeamModel 的类结构是相同的,因为它现在是一个共享资源。我是 Blazor 的新手,我确信我遗漏了一些东西,但可以提供一些指导或帮助。

private async Task FetchTeamData()
{
        try
        {
            List<TeamModel> teams;
            teams = await Http.GetFromJsonAsync<List<TeamModel>>("http://localhost:50663/api/team");
        }
        catch (Exception ex)
        {
            //Always blowing up with Children could not be evaluated here.
        }
}
[HttpGet]
public IActionResult GetAllTeams()
{
    List<TeamModel> teams = _teamRepository.GetAllTeams();

    return Ok(teams);
}

编辑: 好吧,我已将其范围缩小为项目读取该 API 的方式有问题。我可以很好地调用其他托管 API。我不确定它是因为它的 localhost 还是其他问题,但是没有一个 localhost API 方法会正确调用我总是从它那里得到相同的响应。

【问题讨论】:

  • hm 很奇怪,我希望它可以工作。您可以尝试将 TeamModel 作为数组吗?就像GetFromJsonAsync&lt;TeamModel[]&gt; 一样,为避免破坏代码,您可能只需附加.ToList()
  • 我确实已经尝试过了,我的想法与我在网上找到的示例相同,但最终得到了相同的结果。即使我只是将 JSON 作为字符串抓取,它也会给我同样的错误。

标签: c# api rest blazor-webassembly


【解决方案1】:

我刚刚遇到了同样的问题,这是一个 CORS 问题。只需在您的 API 服务器的 startup.cs 中添加类似这样的内容

app.UseCors(policy => 
    policy.WithOrigins("http://localhost:5000", "https://localhost:5001")
    .AllowAnyMethod()
    .WithHeaders(HeaderNames.ContentType));

来源:https://github.com/dotnet/AspNetCore.Docs/blob/master/aspnetcore/blazor/common/samples/3.x/BlazorWebAssemblySample/Pages/CallWebAPI.razor

【讨论】:

    猜你喜欢
    • 2020-09-15
    • 2020-10-05
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2022-08-02
    • 2021-05-22
    相关资源
    最近更新 更多