具有异步静态方法的最小 API [副本]

Minimal API with async static method [duplicate]

提问人:Szyszka947 提问时间:11/30/2022 更新时间:12/1/2022 访问量:1071

问:

当我们在 NET 7 中创建这样的东西时:

app.MapPost("/test", SomeEndpoint.Test);

这是我的 SomeEndpoint.Test:

public static class SomeEndpoint
{
    public static IResult Test(HttpContext httpContext)
    {
        var form = httpContext.Request.ReadFormAsync().Result;
        return Results.Ok(form);
    }
}

那么任何事情都很好。但是我想让它异步,所以现在我的样子如下:SomeEndpoint.Test

public static class SomeEndpoint
{
    public static async Task<IResult> Test(HttpContext httpContext)
    {
        var form = await httpContext.Request.ReadFormAsync();
        return Results.Ok(form);
    }
}

繁荣。这是行不通的,我总是得到 200 OK 响应(即使我更改为 )。我做错了什么?Results.OkResults.BadRequest

C# ASP.Net-Core 异步 最小 API

评论

0赞 Guru Stron 12/1/2022
这是已知的(但不是众所周知的)错误,它应该在 .NET 7 中修复,但它仍然存在(检查重复项)。

答:

3赞 julealgon 11/30/2022 #1

您看到的问题似乎与您传递了额外的参数有关。移除 也会导致您的样品工作。HttpContext

将参数传递给这样的异步静态方法时,似乎您被迫提供参数,否则它将与基于的方法组不匹配。CancellationTokenTask

以下作品:

public static class SomeEndpoint
{
    public static async Task<IResult> Test(
        HttpContext httpContext, 
        CancellationToken token)
    {
        var form = await httpContext.Request.ReadFormAsync(token);
        return Results.Ok(form);
    }
}

评论

0赞 julealgon 12/1/2022
@GuruStron我在这里以全新的 .NET7 项目。
0赞 Guru Stron 12/1/2022
然后他们没有为 POST 修复它,只为 GET 修复它)
1赞 Guru Stron 12/1/2022
似乎他们根本没有修复它(尽管据我所知,它在其中一个预览中起作用)