提问人:Szyszka947 提问时间:11/30/2022 更新时间:12/1/2022 访问量:1071
具有异步静态方法的最小 API [副本]
Minimal API with async static method [duplicate]
问:
当我们在 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.Ok
Results.BadRequest
答:
3赞
julealgon
11/30/2022
#1
您看到的问题似乎与您传递了额外的参数有关。移除 也会导致您的样品工作。HttpContext
将参数传递给这样的异步静态方法时,似乎您被迫提供参数,否则它将与基于的方法组不匹配。CancellationToken
Task
以下作品:
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
似乎他们根本没有修复它(尽管据我所知,它在其中一个预览中起作用)
评论