C# IAuthorizationHandler作为singleton给了我线程相关的问题

C# IAuthorizationHandler作为singleton给了我线程相关的问题,c#,asp.net-core,C#,Asp.net Core,在startup.cs中,我有以下代码行: services.AddSingleton(IAuthorizationHandler, RoleBasedHandler>().cs 它给出了数据库操作中的错误,错误消息显示: 在上一个操作之前在此上下文上启动了第二个操作 操作已完成。这通常是由使用 同一个DbContext实例 当我将startup.cs中的代码行更改为: services.Transient(IAuthorizationHandler, RoleBasedHandler

startup.cs
中,我有以下代码行:

services.AddSingleton(IAuthorizationHandler, RoleBasedHandler>().cs 
它给出了数据库操作中的错误,错误消息显示:

在上一个操作之前在此上下文上启动了第二个操作 操作已完成。这通常是由使用 同一个DbContext实例

当我将
startup.cs
中的代码行更改为:

services.Transient(IAuthorizationHandler, RoleBasedHandler>() 
错误已经消失了。我的理解是,单例版本
RoleBasedHandler
只创建一个
DbContext
对象,并尝试在同时执行的线程中重用它
DbContext
对象不能与多个线程一起工作,因此它会中断


对于我的案例,什么是最佳实践建议?

显然,您需要单独的处理程序和/或使它们在每个线程中使用dbcontext,而不是单个db上下文

不知道这是从哪里来的-你的处理程序,他们是预先打包的吗?这意味着创建它们的人犯了一个重大错误——因为它们与您所说的内容不符


一般来说,它们不应该是单例。

如何创建/请求
DbContext
类的实例?你能给我看一下代码吗?