使用异步和任务,我试图创建一个看起来像这样在C#
protected override Task
HandleRequirementAsync(AuthorizationHandlerContext context,
OperationAuthorizationRequirement requirement,
string resource)
{
if (context.User == null || resource == null)
{
return Task.FromResult(0);
}
var members = await TeamsGraph.GetTeamMembers(resource, context.User);
return Task.FromResult(0);
}
这种方法给我一个错误,因为我有AWAIT TeamsGraph,这就要求标记为异步方法的方法。如果我向该方法添加异步,则表示Task.FromResults(0)的两行将出错。该特定类型的返回是由我重写的底层方法所要求的。
我确定我错过了一些简单的东西,但我只是没有完成异步等待,所以我正在寻找如何设置此方法的指导。
编辑
让我们来看看,如果我可以在下面覆盖大家的意见。
rmjoia - 如果我在任务前添加异步,则返回2的Task.FromResult(0)行出错。
Bradley Uffner - 我正在做的代码来自ASP.NET Core的授权示例,它是预期返回的内容。一个例子见https://docs.microsoft.com/en-us/aspnet/core/security/authorization/secure-data。
David - 在await线后面的代码中有更多的代码来检查用户是否是TeamMember,我只是为了简单而省略。
JSteward - 由于您是第一个提出这个问题的人,您可以提交答案,我会接受。
附加异步,大功告成,是因为@JSteward说,去掉Task.FromResult(0); – rmjoia
当一个方法被标记为'async'并且只返回'Task'而不需要'return'语句时,标记'async'方法并简单地移除'Task.FromResult'。 – JSteward
你回来什么类型的价值?你的方法被声明为'Task',它不返回任何值,但你使用'Task.FromResult(0)'尝试返回'0'。如果你需要返回一个'int',它应该是'Task'。你需要选择一个或另一个。 –