You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET7 ASP.NET API请求成功后抛出System.NotSupportedException异常

问题分析与修复

问题根源

你遇到的System.NotSupportedException是因为基控制器的Handle方法错误地将Task<ServiceResult<T>>对象传递给了Ok()方法,而Task内部包含System.Action类型的成员(如MoveNextAction),JSON序列化器不支持序列化这类委托类型。

修复代码

修改基控制器中的Handle方法,将返回的serviceResult替换为已经await完成的result:

protected async virtual Task<ActionResult<ServiceResult<T>>> Handle<T>(Task<ServiceResult<T>> serviceResult)
{
    var result = await serviceResult;
    if (result.Succeeded)
    {
        // 替换为已完成的业务结果对象,而非Task载体
        return Ok(result);
    }
    return Problem(detail: $"{result.Error.Message}. Internal error code: {result.Error.Code}.", statusCode: 400);
}

错误原因说明

你已经通过var result = await serviceResult;获取了异步操作完成后的实际业务结果,但后续返回时错误传入了未被消费的Task对象。Task作为异步操作的封装载体,内部包含异步执行相关的委托逻辑,这些内容无法被JSON序列化,因此Swagger在尝试序列化响应内容时抛出异常。

内容的提问来源于stack exchange,提问作者user98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:35:03