在Startup.cs中,我配置dbcontext和ConsumerService:
services.AddDbContextPool<FanjiaOpenPlatformApiDbV2Context>(
options =>
options.UseSqlServer(Configuration.GetConnectionString("OpenPlatform"), b => b.UseRowNumberForPaging())
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking)
);
services.AddScoped<ISubscriber, ConsumerService>();
但是每当收到一条消息供消费时,都会抛出异常
无法访问已处置的对象。此错误的常见原因是 放置从依赖项注入中解决的上下文,并 然后稍后尝试在您的其他位置使用相同的上下文实例 应用。如果您正在调用Dispose() 上下文,或将上下文包装在using语句中。如果你是 使用依赖注入,应该让依赖注入 容器负责处理上下文实例
如果我配置dbcontext单例,则该异常不存在
services.AddDbContext<FanjiaOpenPlatformApiDbV2Context>(
options =>
options.UseSqlServer(Configuration.GetConnectionString("OpenPlatform"), b => b.UseRowNumberForPaging())
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking), ServiceLifetime.Singleton
);