簡體   English   中英

在ASP.NET MVC中嵌套異步/等待調用

[英]Nesting async/await calls in ASP.NET MVC

我是異步/等待ASP.NET MVC的新手,對此有一個簡短的問題。 我的問題是否有必要在對數據庫的嵌套調用中使用async / await? 例如:

UnitOfWork.cs

public async Task CommitAsync()
{
     await _context.SaveChangesAsync();
}

AccountService.cs

public async Task SaveLoginAttemptAsync(LoginAttempt loginAttempt)
{
     _appContext.Repository<LoginAttempt>().Add(loginAttempt);
     await _appContext.UnitOfWork.CommitAsync();
}

AccountController.cs

//..
var attempt = new LoginAttempt()
{
    Email = User.Identity.GetEmail(),
    Logintime = DateTime.Now,
    Successful = successful ? "Y" : "N",
    IpAddress = Request.UserHostAddress,
    UserId = Convert.ToInt32(User.Identity.GetUserId())
 };
 await _accountService.SaveLoginAttemptAsync(attempt);
//..

由於端點使用async / await,是否需要AccountService.cs中SaveLoginAttemptAsync上的async / await方法和AccountController.cs中的代碼塊?

謝謝您的幫助!

是的,使用async / await可以讓烏龜一直降下來。 否則會影響您的調試經驗。

從技術上講,您可以跳過所有“更深層”返回的await ,因為您不依賴該上下文中的返回值。 但是,您並不是真的想要。

如果跳過等待並返回Task ,則該方法在調試時將不在調用堆棧中,因為它實際上正在await返回的Task上的await ,而不是方法本身的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM