HttpContext.Current null dentro da tarefa assíncrona
Eu tenho um método que usa um repositório (userRepo
):
public override Task<IdentityResult> CreateLocalUserAsync(IUser user, string password, CancellationToken cancellationToken)
{
var task = new Task<IdentityResult>(() => {
TUserEntity newUser = new TUserEntity
{
Id = user.Id,
UserName = user.UserName,
Password = password
};
userRepo.Save(newUser).Flush();
return new IdentityResult(true);
}, cancellationToken);
task.Start();
return task;
}
ouserRepo
objeto tem uma dependência que usaHttpContext.Current
. Ambos são resolvidos usando ninjectInRequestScope
.
O método acima é chamado dentro do padrãoAccountController
em Mvc 5:
var result = await IdentityManager.Users.CreateLocalUserAsync(user, model.Password);
Eu tentei adicionar essa configuração ao web.config:
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
Além disso, estou definitivamente usando o .NET 4.5. Isso também está no meu web.config:
<httpRuntime targetFramework="4.5" />
Não é possível obter as informações doHttpContext
antes de iniciar a tarefa porque uma dependência douserRepo
na tarefa está usando as informações e ambos os objetos são resolvidos usando Ninject.
Como posso garantir queHttpContext.Current
não será nulo?