【发布时间】:2020-06-26 05:50:40
【问题描述】:
我创建了一个带有标准 CRUD 功能的 RESTapi。 我已经用邮递员测试了所有功能,它们可以正常工作。
我正在使用 Refit 从客户端 blazor 项目中使用这些函数,除了 Delete 函数之外,所有函数都像 sharm 一样工作。当我运行它时,我得到一个带有消息的 System.AggregateException “发生了一个或多个错误。(无效参数:源不能为空且必须有长度)”。
Delete 方法有一个 guid 参数,在代码中关于创建、编辑和删除的一切看起来都一样,但删除很困难。我在这里疯了,有人能弄清楚可能是什么问题吗?
我正在使用一些组件(Page + List -> ListItem,管道看起来像这样:
- 列表项
<button class="btn btn-danger" @onclick="@(() => Delete.InvokeAsync(Item))">Delete</button>
[Parameter] public BIMObjectCategoryResponse Item { get; set; }
[Parameter] public EventCallback<BIMObjectCategoryResponse> Delete { get; set; }
- 列表
[Parameter] public IEnumerable<BIMObjectCategoryResponse> Items { get; set; }
[Parameter] public EventCallback<BIMObjectCategoryResponse> Delete { get; set; }
- 页面
// Callback - Delete
void Delete(BIMObjectCategoryResponse item)
{
var response = bimService.DeleteBIMObjectCategoryAsync(item.BIMObjectCategoryGUID);
}
想法?
更多的澄清和简化。 在测试了下面的几个答案和建议后,问题似乎与回调的原理无关,而与具体的方法有关。我所做的是创建一个仅运行 Init 函数的简单页面。
// Initialize
protected async override Task OnInitializedAsync()
{
Guid guid = Guid.Parse("1e9daac1-1a3e-4eab-8e49-45c2993aba4c");
Console.WriteLine("BeginGet");
var response1 = await bimService.GetBIMObjectCategoryAsync(guid);
Console.WriteLine(jsonService.GetString(response1.Content.Data));
Console.WriteLine("EndGet");
Console.WriteLine("BeginDelete");
var response2 = await bimService.DeleteBIMObjectCategoryAsync(guid);
Console.WriteLine(jsonService.GetString(response2.Content));
Console.WriteLine("EndDelete");
}
【问题讨论】:
-
当我运行调试时,它显示调用没有到达 webapi,在此之前它失败了。我为 get/update/create 尝试了相同的操作,它们都以 web api 的调试模式结束。
-
Henrik,你肯定是对的,我添加了一些更完整的代码。请检查一下。
-
是的,我实现了您推荐的逻辑,但没有帮助。
-
请显示删除方法的完整代码。另外,显示 Program.cs 文件的代码。我猜这个问题与正在使用的 HttpMessagelHandler 单声道有关。
标签: entity-framework asp.net-core-webapi client-side blazor webassembly