У меня есть метод, который использует репозиторий (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;
}
Объект userRepo
имеет зависимость, которая использует HttpContext.Current
. Оба они разрешены с помощью ninject InRequestScope
.
Вышеуказанный метод вызывается внутри стандартного AccountController
в Mvc 5:
var result = await IdentityManager.Users.CreateLocalUserAsync(user, model.Password);
Я попытался добавить этот параметр в web.config:
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
Кроме того, я определенно использую .NET 4.5. Это также в моем web.config:
<httpRuntime targetFramework="4.5" />
Невозможно получить информацию из HttpContext
до запуска задачи, потому что зависимость userRepo
в задаче использует информацию, и оба объекта разрешаются с помощью Ninject.
Как я могу гарантировать, что HttpContext.Current
не будет null?