HttpContext.Current null wewnątrz asynchronicznego zadania
Mam metodę, która używa repozytorium (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;
}
TheuserRepo
obiekt ma zależność, która używaHttpContext.Current
. Oba są rozwiązywane za pomocą ninjectInRequestScope
.
Powyższa metoda jest wywoływana wewnątrz wartości domyślnejAccountController
w Mvc 5:
var result = await IdentityManager.Users.CreateLocalUserAsync(user, model.Password);
Próbowałem dodać to ustawienie do web.config:
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
Ponadto zdecydowanie korzystam z .NET 4.5. Jest to również w moim web.config:
<httpRuntime targetFramework="4.5" />
Nie można uzyskać informacji zHttpContext
przed rozpoczęciem zadania, ponieważ zależnośćuserRepo
w zadaniu wykorzystywana jest informacja, a oba obiekty są rozwiązywane za pomocą Ninject.
Jak mogę to zapewnićHttpContext.Current
nie będzie null?