Отмена в ASP.NET Core UserManager - PullRequest
       43

Отмена в ASP.NET Core UserManager

0 голосов
/ 08 ноября 2019

В настоящее время я внедряю некоторые сервисы, основанные на дизайне UserManger Asp.Net Core Identity. В реализации мне было интересно, как usermanager может поддерживать отмену, если нет возможности передать токен отмены в методы UserManager.

Я также увидел, что внутри usermanager есть свойство токена отмены (Со значением по умолчанию), который используется им внутри и будет передан используемым асинхронным методам. Но это свойство недоступно из-за его уровня защиты

protected virtual CancellationToken CancellationToken => CancellationToken.None;

Как я могу передать свой токен отмены, который я использую в моем контроллере, например, в диспетчер пользователей? Должен ли я его перегрузить и передать в него через новый метод?

public class MyUserManager : UserManager<MyUser>
{
    /* ... Other stuff... */

    protected override CancellationToken CancellationToken  {get;set;}

    public void SetCancellationToken(CancellationToken cancellationToken)
    {
         this.CancellationToken = cancellationToken;
    }

}

Это правильный путь для отмены с помощью userManager? В случае «да»: почему это отличается от других компонентов, в которых используются cancellationToken, например EF Core, где вы должны передать CancellationToken через параметр метода?

1 Ответ

0 голосов
/ 08 ноября 2019

UserManager внутренне обрабатывает отмену и получает токен отмены от HttpContext.RequestAborted. Таким образом, вам не нужно передавать токен отмены, и поэтому методы не принимают его.

...