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

ASP.NET Core 8 Minimal API报错:RequestDelegate不接受2个参数

问题原因与解决办法

你遇到的CS1593错误,核心原因是编译器无法自动推断Lambda表达式的统一返回类型。

TypedResults.NotFound()返回的是NotFoundHttpResult类型,TypedResults.Ok()返回的是OkHttpResult类型——这两个是不同的具体实现类,没有直接继承关系,编译器没法自动将它们推导为共同的IResult接口类型,导致委托签名不匹配。

而用Results时,它的所有方法直接返回IResult接口实例,编译器能直接识别统一的返回类型,所以不会报错;移除null判断分支后,只有单一返回类型,自然也能通过编译。

解决方式

显式指定Lambda的返回类型为Task<IResult>,让编译器明确知道要将不同的TypedResults结果统一到IResult接口:

app.MapPost("check", async Task<IResult> ([FromBody] UserClaims claims, ApplicationDbContext dbContext) =>
{
    var result = await dbContext.Users.SingleOrDefaultAsync(x => x.Phone == claims.Phone);

    if (result is null)
        return TypedResults.NotFound();

    return TypedResults.Ok();
});

TypedResults的使用限制

TypedResults的设计是为了提供强类型结果(方便OpenAPI文档生成等场景),但使用时必须确保编译器能识别出统一的返回类型:

  • 当Lambda有多个返回分支时,必须显式指定返回类型为Task<IResult>(同步方法则是IResult)
  • 不能依赖编译器自动推导不同具体结果类型的共同接口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:12:05