Migration von ASP.NET CORE 2.2 bis 3.1. Autofac.core.DependencyResolutionExceptionC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Migration von ASP.NET CORE 2.2 bis 3.1. Autofac.core.DependencyResolutionException

Post by Anonymous »

Ich mache eine Migration und habe eine Ausnahme gestoßen. AutoFac kann meinen Dienst von einer Instanz eines Dienstanbieters beheben, kann ihn jedoch zum Zeitpunkt der Anfrage nicht in meinem Controller erhalten. DynamicProxy Infrastructure Interface und Sie sollten sie niemals selbst implementieren. Versuchen Sie, einen vorhandenen Proxy zu proxy?

Code: Select all

public class AutoregisterableModule : Autofac.Module
{
private readonly string _nameFilter;

/// 
/// Default ctor
/// 
/// 
Load will only search assemblies with names that contains filter
public AutoregisterableModule(string nameFilter)
{
_nameFilter = nameFilter;
}

/// 
/// Register's dependencies
/// 
protected override void Load(ContainerBuilder builder)
{
var assemblies = new List();
var dependencies = DependencyContext.Default.RuntimeLibraries.Where(x => x.Name.Contains(_nameFilter));

foreach (var library in dependencies)
{
var assembly = Assembly.Load(new AssemblyName(library.Name));
assemblies.Add(assembly);
}

builder.Register(c => new LogInterceptor()).InstancePerLifetimeScope();

var isProd = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production";

var containerBuilder = builder.RegisterAssemblyTypes(assemblies.ToArray())
.Where(TypesToRegisterFilter)
.PreserveExistingDefaults()
.AsImplementedInterfaces();

if (!isProd)
{
containerBuilder.EnableInterfaceInterceptors();
}

base.Load(builder);
}

private static bool TypesToRegisterFilter(Type type)
{
return !type.IsSubclassOf(typeof(SwaggerConfigureOptions)) && !typeof(BackgroundService).IsAssignableFrom(type);
}
}
Wenn ich diese Zeile entferne, funktioniert alle gut (außer meinem loggerinterceptor : d)

Code: Select all

containerBuilder.EnableInterfaceInterceptors();
< /code>
Mein Dienst sieht aus wie < /p>
[Intercept(typeof(LogInterceptor))]
public class CategoriesService : ICategoriesService
{
// some code here
}
Ich habe versucht, es durch Herunterfahren von autofac.extensions zu beheben. Ich behebe die Ausnahme und halte meinen Interceptor zum Laufen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post