Blazor客户端System.Net.Http错误



在我的数据服务(客户端)中,我试图用这个调用控制器API(Id 36fc1b86-9697-49c5-978c-825f465de73b被硬编码以显示问题):

return await JsonSerializer.DeserializeAsync<IEnumerable<Stage>>
(
await _httpClient.GetStreamAsync($"api/stage/36fc1b86-9697-49c5-978c-825f465de73b"), 
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }
);

服务器端(API)

[HttpGet("{id}")]
public IActionResult GetAllStage(string id)
{
return Ok(_stageRepository.GetAllStagesById(id));
}

错误:

Microsoft.AspNetCore.Components.WebAssembly.Frendering.WebAssemblyRenderer[100]呈现组件时出现未处理的异常:值不能为null。(参数"source")System.ArgumentNullException:值不能为null。(参数"源")

但如果GUID以字母开头(请参阅下面的/a…),一切都是这样的:

return await JsonSerializer.DeserializeAsync<IEnumerable<Stage>>
(
await _httpClient.GetStreamAsync($"api/stage/a0bdb087-dadc-4382-9a28-75f93917698b"), 
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });

变通办法。我在开头加了一个字母(这里是X):

return await JsonSerializer.DeserializeAsync<IEnumerable<Stage>>
(await _httpClient.GetStreamAsync($"api/stage/X{id}"), new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });

并在API中删除它。。。

[HttpGet("{id}")]
public IActionResult GetAllStage(string id)
{
return Ok(_stageRepository.GetAllStagesById(id.Remove(0, 1)));
}

知道这个bug吗?

线索在中

Unhandled exception rendering component: Value cannot be null. (Parameter 'source')

这意味着IEnumerable是null,它不应该在那里。由于这是从WebAssemblyRenderer抛出的,您可能会在没有null保护的@foreach() { <tag> </tag> }中使用结果。

为什么它依赖于Guid的起始字符?这肯定是GetAllStagesById()内部的一个问题
我们无法调试未包含的代码。

相关内容

  • 没有找到相关文章

最新更新