在 app.GetMap() 函数中返回任务

Returning a Task in app.GetMap() function

我正在尝试将来自 user-agent 请求 headers 的简单字符串写入浏览器。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", (context) => return context.Request.Headers["User-Agent"].ToString(););
app.Run();

这给出了编译错误 Cannot convert expression type 'string' to return type 'System.Threading.Tasks.Task'

对此的正确解决方案是什么。据我了解,我需要用任务将字符串 context.Request.Headers["User-Agent"].ToString(); 包装起来,但我真的不知道如何在箭头函数中正确执行此操作。

做这样的事情:

Task.FromResult(context.Request.Headers["User-Agent"].ToString());

这会起作用:

app.MapGet("/", (HttpContext context) => context.Request.Headers["User-Agent"].ToString());

因为参数的名称并不重要。如果你看图片,你可以看到编译器假设参数是 HttpRequest,而不是 HttpContext.