好的,我一直在试图弄清楚这个问题,我已经阅读了一些文章,但其中没有一个提供我想要的答案。
我的问题是:为什么 Task
必须返回一个 Task 而 async Task
不需要呢?
例如:
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
// Code removed for brevity.
return Task.FromResult<object>(null);
}
如您所见,该方法不是 async
的,因此必须返回一个任务(Task)。
现在,请看下面这个:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
// Code removed for brevity...
if(user == null)
{
context.SetError("invalid_grant", "username_or_password_incorrect");
return;
}
if(!user.EmailConfirmed)
{
context.SetError("invalid_grant", "email_not_confirmed");
return;
}
// Code removed for brevity, no returns down here...
}
它使用了async
关键字,但它没有返回一个Task。为什么会这样呢?我知道这可能是最愚蠢的问题,但我想知道为什么会这样。