.NET Core Identity UI - заместване на SignInManager‹IdentityUser›

Опитвам:

public class VoySignInManager : SignInManager<IdentityUser>
{
    public VoySignInManager(Microsoft.AspNetCore.Identity.UserManager<Microsoft.AspNetCore.Identity.IdentityUser> userManager, Microsoft.AspNetCore.Http.IHttpContextAccessor contextAccessor, Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory<Microsoft.AspNetCore.Identity.IdentityUser> claimsFactory, Microsoft.Extensions.Options.IOptions<Microsoft.AspNetCore.Identity.IdentityOptions> optionsAccessor, Microsoft.Extensions.Logging.ILogger<Microsoft.AspNetCore.Identity.SignInManager<Microsoft.AspNetCore.Identity.IdentityUser>> logger, Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider schemes)
        : base(userManager, contextAccessor, claimsFactory, optionsAccessor, logger, schemes)
    {
    }

    public override Task<Microsoft.AspNetCore.Identity.SignInResult> PasswordSignInAsync(IdentityUser user, string password, bool isPersistent, bool lockoutOnFailure)
    {
        return Microsoft.AspNetCore.Identity.SignInResult.Success;
    }
}

Взимам:

Error   CS0029  Cannot implicitly convert type 'Microsoft.AspNetCore.Identity.SignInResult' to 'System.Threading.Tasks.Task<Microsoft.AspNetCore.Identity.SignInResult>'    

какво правя грешно как да върна успешен SignInResult тук?

(забележете, че очевидно това е просто опростена версия, за да покаже грешката)


person kofifus    schedule 30.05.2018    source източник


Отговори (2)


Не е необходимо асинхронизиране/изчакване. Просто върнете резултата си като return Task.FromResult(SignInResult.Success);

person Shawn de Wet    schedule 22.05.2020

Липсва ви async, когато дефинирате функция:

public override async Task<Microsoft.AspNetCore.Identity.SignInResult> PasswordSignInAsync(IdentityUser user, string password, bool isPersistent, bool lockoutOnFailure)
{
    return await Task.FromResult(SignInResult.Success);
}
person manhmaluc    schedule 30.05.2018
comment
но генерирах тази функция с помощта на визуално студио генериране на замествания? не е асинхронен в основата... - person kofifus; 30.05.2018
comment
ако добавя async, получавам: предупреждение CS1998: Този async метод няма оператори 'await' и ще работи синхронно. Помислете за използване на оператора 'await', за да изчакате неблокиращи извиквания на API, или 'await Task.Run(...)', за да извършите обвързана с процесора работа във фонова нишка. - person kofifus; 30.05.2018
comment
Не съм сигурен защо генераторът не е добавил async към функцията за отмяна - person manhmaluc; 30.05.2018
comment
@kofifus Актуализирах отговора си с връщане, моля, опитайте. - person manhmaluc; 30.05.2018
comment
добре, това се изгражда, но се опитвам да разбера защо имам нужда от изчакване в моето заместване, когато базовият клас го няма? - person kofifus; 30.05.2018
comment
Не мисля, че това е правилно, ако опитам вместо това, например return base.PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure); не се изгражда - person kofifus; 30.05.2018
comment
Това не изисква async / await. Трябва да работи само с return Task.FromResult(SignInResult.Success); - person Brad; 30.05.2018