Я считаю, что это проблема приоритета.Ваш код эффективен:
var foo = (await actionContext.RequestContext?.Principal?.ToUserTokenAsync()) ??
UserToken.UnidentifiedUser;
Другими словами, если результат ожидания равен нулю, верните UserToken.UnidentifiedUser
.Но вы все еще пытаетесь сделать ожидание - что означает, что вы можете ожидать чего-то, что является нулевым, но что не получается.
Я подозреваю, что вы хотите:
var task = actionContext.RequestContext?.Principal?.ToUserTokenAsync()
?? Task.FromResult(UserToken.UnidentifiedUser);
var foo = await task;
Или избегайте ожидания полностью, когда естьnull:
var task = actionContext.RequestContext?.Principal?.ToUserTokenAsync();
var foo = task != null ? await task : UserToken.UnidentifiedUser;