ErrorOr 从 API 返回 IActionResult 时出现错误

问题描述 投票:0回答:1

我正在使用 ErrorOr (https://github.com/amantinband/error-or) 库从我的 API 返回响应。但是,当我从 API 方法返回响应时,我收到此错误:

enter image description here

这是我的代码:

[HttpPost("token", Name = "GenerateToken")]
[ProducesResponseType<GenerateToken.Response>((int)HttpStatusCode.OK)]
public async Task<IActionResult> GenerateToken(GenerateToken.Command command)
{
    var response = await mediator.Send(command);

    return await response.MatchAsync(
        value => Ok(value),
        errors => BadRequest(errors));
}

我在这里做错了什么?任何帮助将不胜感激。

c# asp.net-core asp.net-core-webapi
1个回答
0
投票

正如评论中所指出的,您的

MatchAsync
方法闭包需要返回
TValue
的任务。最重要的是,您将在 onValue 闭包中返回
OkOjectResult
,并在 onError 闭包中返回
BadRequestObjectResult
。因此,
MatchAsync
方法无法推断输出形状应该是什么。

由于您在 Match 闭包中没有执行任何异步操作,因此您可以仅使用非异步 Match 并避免使用任务包装的返回值,但您的问题仍然是相同的; Match并不知道你要通过

IActionResult
接口返回。因此,您必须将每个闭包返回值显式转换为
IActionResult

return response.Match(
            value => (IActionResult)Ok(value),
            errors => (IActionResult)BadRequest(errors));

或者,显式声明

IActionResult

的泛型类型
return response.Match<IActionResult>(
            Ok,
            BadRequest);
© www.soinside.com 2019 - 2024. All rights reserved.