.net 单例DataAccessLayer/Connetion,服务范围为;无法访问已释放的对象内存池
我已经在.NETCore3.1中创建了一个web API。我的应用程序需要连接到多个数据库,而且数据事务量很大,因此我使用了ADO.NET:.net 单例DataAccessLayer/Connetion,服务范围为;无法访问已释放的对象内存池,.net,asp.net-core,dependency-injection,ado.net,connection-pooling,.net,Asp.net Core,Dependency Injection,Ado.net,Connection Pooling,我已经在.NETCore3.1中创建了一个web API。我的应用程序需要连接到多个数据库,而且数据事务量很大,因此我使用了ADO.NET: 我的serviceLayer生命周期已确定 我把他定义为辛格尔顿 我还实现了连接池 有时我会遇到无法访问已处置对象MemoryPool的异常。这是由于连接池还是由于服务生命周期的某些问题 我的想法是这可能是由于连接池不确定 我注册的服务: 公共静态无效注册表状态(IServiceCollection服务) { services.addScope(); }
连接池
不确定
我注册的服务:
公共静态无效注册表状态(IServiceCollection服务)
{
services.addScope();
}
将服务注入控制器,然后将存储库注入服务,如下所示:
公共进程更新服务(
IPProductService产品服务,
IConfigRepository\u配置存储库,
IAnotherRepository\u IAnotherRepository)
{
这。_ConfigRepository=ConfigRepository;
此.\u IAnotherRepository=\u IAnotherRepository
}
存储库limetime类似于
services.AddTransient();
services.AddSingleton();
services.AddSingleton();
DBConfig是一个基本上获取连接字符串的类
公共类DBConfig:IDBConfigu
{
public void SetDbConnection(字符串ConnectionNAme,)
{
//基于连接名称获取连接字符串
_ConnectionString=“ConnectionString”;
}
}
公共类AnotherRepository:IAnotherRepository
{
公共IDBConfig dBConfig;
公共另一个存储库(IDBConfiguration dBConfiguration)
{
this.dBConfiguration=dBConfiguration;
这个.dBConfiguration.SetDbConnection(“TesConnec”);
}
…其他方法
}
连接字符串状
"TesConnec": "data source=ServerName;initial catalog=DBname;user id=userID;password=pswd;Connection Timeout=180;Connection Lifetime=2000;Min Pool Size=1;Max Pool Size=100;Pooling=true;",
请检查您的代码,该代码包含一些问题,例如:
services.AddTransient()
和公共类DBConfig:IDBConfigu
,尝试修改代码。此外,尝试使用AddScoped()
方法注册存储库和DBConfig。