Open Closed

New Project with new console template cannot utilize service with ISettingProvider, receive dependency resolution exception #1106


User avatar
0
developers@ten3.systems created
  • ABP Framework version: v4.2.2

  • UI type: Angular

  • DB provider: EF Core

  • Tiered (MVC) or Identity Server Separated (Angular): no

  • Exception message and stack trace:

Autofac.Core.DependencyResolutionException
 HResult=0x80131500
 Message=An exception was thrown while activating Volo.Abp.Settings.DefaultValueSettingValueProvider -> Volo.Abp.SettingManagement.SettingStore -> Volo.Abp.SettingManagement.SettingManagementStore.
 Source=Autofac
 StackTrace:
  at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
  at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
  at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt)
  at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next)
  at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt)
  at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
  at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
  at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt)
  at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next)
  at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.b__1(ResolveRequestContext ctxt)
  at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt)
  at Autofac.Core.Resolving.ResolveOperation.InvokePipeline(ResolveRequest request, DefaultResolveRequestContext requestContext)
  at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request)
  at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request)
  at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request)
  at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request)
  at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
  at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters)
  at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters)
  at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType)
  at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType)
  at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
  at Volo.Abp.Settings.SettingValueProviderManager.<>c__DisplayClass6_0.<.ctor>b__1(Type type)
  at System.Linq.Enumerable.SelectIListIterator`2.ToList()
  at Volo.Abp.Settings.SettingValueProviderManager.<>c__DisplayClass6_0.<.ctor>b__0()
  at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
  at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
  at System.Lazy`1.CreateValue()
  at System.Lazy`1.get_Value()
  at Volo.Abp.Settings.SettingValueProviderManager.get_Providers()
  at Volo.Abp.Settings.SettingProvider.d__10.MoveNext()
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
  at TestAbpApp.HelloWorldService.<SayHello>d__2.MoveNext() in D:\Programming\_play\TestAbpApp\aspnet-core\src\TestAbpApp.Application\HelloWorldService.cs:line 19

 This exception was originally thrown at this call stack:
   [External Code]

Inner Exception 1:
DependencyResolutionException: None of the constructors found with 'Volo.Abp.Autofac.AbpAutofacConstructorFinder' on type 'Volo.Abp.SettingManagement.SettingManagementStore' can be invoked with the available services and parameters:
Cannot resolve parameter 'Volo.Abp.SettingManagement.ISettingRepository settingRepository' of constructor 'Void .ctor(Volo.Abp.SettingManagement.ISettingRepository, Volo.Abp.Guids.IGuidGenerator, Volo.Abp.Caching.IDistributedCache 1[Volo.Abp.SettingManagement.SettingCacheItem], Volo.Abp.Settings.ISettingDefinitionManager)'.
  • Steps to reproduce the issue:

  • Create new project via app template using above settings

  • use abp new -t console to create a new console project in the sln

  • take the HelloWorldService from the new console proj and move it to the MyApp.Application project

  • reference the ApplicationModule in the new console project using [DependsOn]

  • inject ISettingProvider into HelloWorldService

  • add setting to the domain module's settingDefinitionProvider

  • add setting to appsettings.json

  • try to use the SettingProvider to GetOrNullAsync

  • cry

/src/MyApp.Domain/Settings/MyAppSettingDefinitionProvider.cs

    public class TestAbpAppSettingDefinitionProvider : SettingDefinitionProvider
    {
        public override void Define(ISettingDefinitionContext context)
        {
            //Define your own settings here. Example:
            context.Add(new SettingDefinition("Test"));
        }
    }
    ```
/src/MyApp.Application/HelloWorldService.cs
public class HelloWorldService : ITransientDependency
{
    private readonly ISettingProvider _settingProvider;

    public HelloWorldService(ISettingProvider settingProvider)
    {
        _settingProvider = settingProvider;
    }

    public async void SayHello()
    {
        Console.WriteLine("Hello World!");
        var setting = await _settingProvider.GetOrNullAsync("Test");
        Console.WriteLine(setting);
    }
}
```

2 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Can you share the problem project with me? liming.ma@volosoft.com

  • User Avatar
    0
    ServiceBot created
    Support Team Automatic process manager

    This question has been automatically marked as stale because it has not had recent activity.

Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
Do you need assistance from an ABP expert?
Schedule a Meeting
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v9.3.0-preview. Updated on April 11, 2025, 10:10