当我们在 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
)。我做错了什么?
最佳答案
您看到的问题似乎与您传递额外参数这一事实有关。删除 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);
}
}
关于c# - 具有异步静态方法的最小 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74628221/