Avora
Avora

Reputation: 372

Service is not register in Eureka because of Autofac

I am trying to register my .net 7 web api application to eureka server, but I am getting the following error, why?

Code Explain

I use Autofac for service registrations, I make autofac configurations in a separate dotnet 7 library project. Even though I wrote the necessary configurations to connect to the Eureka service, I get an error.

Codes: CoreModule

using Project.Services.Core.Extensions;
using Project.Services.Core.Utilities.IoC;
using Microsoft.Extensions.DependencyInjection;
using StackExchange.Redis;
using System.Diagnostics;
using Serilog;
using Microsoft.Extensions.Configuration;
using Steeltoe.Discovery.Client;
using Steeltoe.Discovery.Eureka;

namespace Project.Services.Core.DependencyResolvers
{
    public class CoreModule : ICoreModule
    {
        public void Load(IServiceCollection services, IConfiguration configuration)
        {
            services.AddServiceDiscovery(o => o.UseEureka());


            services.AddMemoryCache();
            services.AddSingleton<ICacheManager, MemoryCacheManager>();
            services.AddSingleton<IDistributedCacheManager, DistributedCacheManager>();
            services.AddHttpContextAccessor();
            services.AddSingleton<Stopwatch>();

        }
    }
}

Program.cs

builder.Services.AddDependencyResolvers(new ICoreModule[]
            {
                new CoreModule()
            }, builder.Configuration);

appsettings.json config

  "Spring": {
    "Application": {
      "Name": "STOCK-SERVICE"
    }
  },
  "Eureka": {
    "Client": {
      "ServiceUrl": "http://localhost:867/eureka/",
      "ValidateCertificates": false,
      "ShouldRegisterWithEureka": true
    },

    // No docke instance added
    "Instance": {
      //"port": 5004,
      "NonSecurePort": 5004,
      "HostName": "localhost",
      "InstanceId": "Stock.API,Port:5004",
      "StatusPageUrlPath": "/swagger/index.html"
      //"HealthCheckUrlPath": "/api/values/healthcheck"
    }
  }

Error Details

Autofac.Core.DependencyResolutionException
  HResult=0x80131500
  Message=An exception was thrown while activating λ:Microsoft.Extensions.Hosting.IHostedService[] -> Steeltoe.Discovery.Client.DiscoveryClientService -> λ:Steeltoe.Discovery.IDiscoveryClient -> λ:Steeltoe.Discovery.Eureka.EurekaDiscoveryClient -> Steeltoe.Discovery.Eureka.EurekaApplicationInfoManager.
  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.<BuildPipeline>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.<BuildPipeline>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.Core.Container.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[T](IServiceProvider provider)
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>d__12.MoveNext()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.<RunAsync>d__4.MoveNext()
   at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
   at Program.<Main>$(String[] args) 




DependencyResolutionException: An exception was thrown while invoking the constructor 'Void .ctor(Microsoft.Extensions.Options.IOptionsMonitor`1[Steeltoe.Discovery.Eureka.EurekaInstanceOptions], Microsoft.Extensions.Logging.ILoggerFactory)' on type 'EurekaApplicationInfoManager'.

NullReferenceException: Object reference not set to an instance of an object.

Upvotes: 0

Views: 79

Answers (0)

Related Questions