我正在使用ASP.NET Core,內置依賴注入和asp.net標識。依賴注入UserManager正在處理異步調用(ASP.NET CORE)
我遇到的問題是每當我嘗試訪問任何上下文的異步(即在此示例中爲UserManager<ApplicationUser>
)時,它在訪問時將被處置。
例如,我的控制器低於(我們所關注的對象是UserManager
)
private readonly ApplicationDbContext _dbContext;
private readonly UserManager<ApplicationUser> _userManager;
private readonly ViewRender _view;
private readonly IConfiguration _config;
public UserController(ApplicationDbContext dbContext,
UserManager<ApplicationUser> userManager,
ViewRender view,
IConfiguration config)
{
this._dbContext = dbContext;
this._userManager = userManager;
this._view = view;
this._config = config;
}
通知之_userManager
正在使用startup.cs
Visual Studio的模板默認設置現在注入在此控制器中的一種方法中,我嘗試以下操作:
[HttpDelete]
public async void Delete(string id)
{
var user = _userManager.Users.Where(a => a.Id == id).FirstOrDefault();
user.Deleted = true;
var result= await _userManager.UpdateAsync(user);
}
但是當await _userManager.UpdateAsync(user)
被擊中時,它會調用「對象已配置」錯誤。我對異步/等待的理解是執行會在等待時停止?因此,控制器在完成之前不應該處理對象_userManager
? (顯然,這個邏輯是錯誤的)
它的工作原理是不使用aysnc方法並調用_userManager.UpdateAsync(user).Result;
但想了解aysnc溶液/等待
重構刪除操作是是'異步塔斯k刪除(string id){... return Ok(); }' –
Nkosi
但在這種特殊情況下,我不希望該方法返回任何東西? – michael
然後使用'異步任務'這意味着一個無效的方法 – Nkosi