GetRolesAsync退出而没有跟踪

泽维尔·佩纳(Xavier Pena)

这是Blazor Server应用程序。我使用Serilog,但未显示任何信息。我希望某个地方有异常,但是代码只是存在而没有任何痕迹。

这是我正在尝试做的简化版本。它在两个GetRolesAsync中的任意一个处随机退出:

// Both injected as Scoped at Startup.cs
private UserManager<IdentityUser> _userManager;
private RoleManager<IdentityRole> _roleManager;

public Task<IdentityUser> FetchIdentityUser()
{
    // Two users:
    var allUsers = _userManager.Users.ToList();
    
    // Two roles:
    var allRoles = _roleManager.Roles.ToList();
    
    // Each user is attached to a single role in the db
    // (checked via MysqlWorkbench)

    var roleNames1 = _userManager.GetRolesAsync(allUsers.First()).Result; // <-- sometimes it exits here (no exception is thrown, no trace of what's going on ...)
    var roleNames2 = _userManager.GetRolesAsync(allUsers.Last()).Result; // <-- ...and sometimes it exists here (no exception is thrown, no trace of what's goin on ...)
    
    return Task.FromResult(allUsers.First());
}
稻田

这些是异步方法,您需要等待它们。

编辑(感谢Mark Gravell的评论):您可能会在这里看到同步上下文死锁,因为它们试图返回到调用线程。这也将更好地解释为什么您很难看到该错误!

public **async** Task<IdentityUser> FetchIdentityUser()
{
    // Two users:
    var allUsers = _userManager.Users.ToList();
    
    // Two roles:
    var allRoles = _roleManager.Roles.ToList();
    
    // Each user is attached to a single role in the db
    // (checked via MysqlWorkbench)

    var roleNames1 = await _userManager.GetRolesAsync(allUsers.First()); // <-- sometimes it exits here (no exception is thrown, no trace of what's going on ...)
    var roleNames2 = await _userManager.GetRolesAsync(allUsers.Last()); // <-- ...and sometimes it exists here (no exception is thrown, no trace of what's goin on ...)
    
    return Task.FromResult(allUsers.First());
}

您需要awaits并将该方法本身标记为异步(确保在从那里调用它的地方等待它)。

在极少数情况下,应直接访问此类任务的结果,并且需要显式结构化的代码才能使其正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

申请没有退出

来自分类常见问题

无法更新:没有跟踪的分支

来自分类Dev

扩展错误没有消息或堆栈跟踪

来自分类Dev

DNN PageLoadException,没有堆栈跟踪

来自分类Dev

哨兵:事件没有堆栈跟踪

来自分类Dev

Laravel上没有异常跟踪

来自分类Dev

JBoss中没有堆栈跟踪的异常

来自分类Dev

Git rebase:没有跟踪信息

来自分类Dev

没有NSLog,while循环无法退出

来自分类Dev

警卫退出时弹簧没有停止

来自分类Dev

Pygame没有在按键时退出

来自分类Dev

没有退出的NodeJS投掷错误

来自分类Dev

线程时Tkinter没有退出

来自分类Dev

没有NSLog,while循环无法退出

来自分类Dev

退出程序而没有coredump或分段错误

来自分类Dev

Sinatra退出没有错误

来自分类Dev

用户没有退出firebase android

来自分类Dev

Drone CI 没有让我退出

来自分类Dev

有没有办法跟踪github克隆?

来自分类Dev

有没有办法退出单个循环并退出所有循环?

来自分类Dev

有没有办法让X按钮退出Spotify?

来自分类Dev

带有Samba的Docker容器退出,没有任何消息

来自分类Dev

设置值jquery在跟踪中有效,但在没有跟踪时无效

来自分类Dev

有没有更有效的方式来跟踪没有孩子的父母记录?

来自分类Dev

有没有更有效的方式来跟踪没有孩子的父母记录?

来自分类Dev

为什么方法参考没有对此进行跟踪?

来自分类Dev

Haxe中没有文件名和行号的跟踪

来自分类Dev

没有堆栈跟踪的错误详细信息

来自分类Dev

setItemDelegateForColunm()取消没有堆栈跟踪的应用程序