- ABP Framework version: v6.0.1
- UI type: Blazor
- DB provider: EF Core
- Tiered (MVC) or Identity Server Separated (Angular): no
- Exception message and stack trace: System.NullReferenceException:“Object reference not set to an instance of an object.”
- Steps to reproduce the issue:" 1)method in background worker 2)ITenantRepository tenantRepository = this.LazyServiceProvider.LazyGetRequiredService<ITenantRepository>(); 3)List<Tenant> allTenants = await tenantRepository.GetListAsync();
10 Answer(s)
-
0
hi
Can you share the code of
background worker
? -
0
public class FansJoinedNotifierWorkItem : AsyncPeriodicBackgroundWorkerBase { public FansJoinedNotifierWorkItem(AbpAsyncTimer timer, IServiceScopeFactory serviceScopeFactory) : base(timer, serviceScopeFactory) { this.Timer.Period = 60 * 1000; } protected async override Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) { this.Timer.Period = 1440 * 60 * 1000; 扫码关注送积分 subscribPoint = new 扫码关注送积分(); subscribPoint.LazyServiceProvider = this.LazyServiceProvider; await this.FansSubscribedPoint(); this.Timer.Period = siteOptions.Value.UserFollowNotifyIntervalMinutes * 60 * 1000; } static List<Tenant> allTenants; public async Task FansSubscribedPoint() { Log.Information("Starting: 【扫码关注】积分发放..."); IDataFilter dataFilter = this.LazyServiceProvider.LazyGetRequiredService<IDataFilter>(); if (allTenants == null) { using (dataFilter.Disable<IMultiTenant>()) { ITenantRepository tenantRepository = this.LazyServiceProvider.LazyGetRequiredService<ITenantRepository>(); allTenants = await tenantRepository.GetListAsync(); } } …… Log.Information("Completed: 【扫码关注】积分发放..."); } }
-
0
and I try another way,
ICurrentTenant currentTenant = this.LazyServiceProvider.LazyGetRequiredService<ICurrentTenant>(); ITenantRepository tenantRepository = this.LazyServiceProvider.LazyGetRequiredService<ITenantRepository>(); if (allTenants == null) { using (currentTenant.Change(null)) { allTenants = await tenantRepository.GetListAsync(); } }
got the same error again: Object reference not set to an instance of an object.
-
0
Object reference not set to an instance of an object.
Full error stack?
-
0
2022-11-17 11:10:23.791 +08:00 [INF] Starting: 【扫码关注】积分发放... 2022-11-17 11:10:46.619 +08:00 [ERR] Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object. at Yee.Change.AdminBlazorUI.WorkItems.FansJoinedNotifierWorkItem.FansSubscribedPoint() in D:\dev\abp\change\admin-blazor-ui\src\Yee.Change.AdminBlazorUI.Application\WorkItems\FansJoinedNotifierWorkItem.cs:line 97 at Yee.Change.AdminBlazorUI.WorkItems.FansJoinedNotifierWorkItem.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) in D:\dev\abp\change\admin-blazor-ui\src\Yee.Change.AdminBlazorUI.Application\WorkItems\FansJoinedNotifierWorkItem.cs:line 56 at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync(CancellationToken cancellationToken) 2022-11-17 11:10:51.016 +08:00 [INF] Initialized all ABP modules.
-
0
Please set a breaking point to check which object is null/
-
0
Oh...
ITenantRepository tenantRepository = this.LazyServiceProvider.LazyGetRequiredService<ITenantRepository>();
tenantRepository is null
-
0
Can you reproduce the problem in a new template project? liming.ma@volosoft.com
-
0
No restrict to get the service of ITenantRepository?
Can I get the ITenantRepository anywhere especially in backgroun worker class?
-
0
We need to check the project.
https://support.abp.io/QA/Questions/4061#answer-1ab3be6e-393d-7ab9-13c2-3a0796233132