好的,我一直在试图解决这个问题,我已经阅读了一些文章,但没有一篇提供我正在寻找的答案。
我的问题是:为什么Task必须返回 Task 而async Task不必返回?例如:
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
// Code removed for brevity.
return Task.FromResult<object>(null);
}
Run Code Online (Sandbox Code Playgroud)
正如你在那里看到的,那个方法不是async,所以它必须返回一个任务。
现在,看看这个:
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...
}
Run Code Online (Sandbox Code Playgroud)
它使用async关键字,但不返回任务。这是为什么?我知道这可能是有史以来最愚蠢的问题。但我想知道为什么会这样。