C# 从asp.core 2.2迁移到3.1。Autofac.Core.dependencResolutionException

C# 从asp.core 2.2迁移到3.1。Autofac.Core.dependencResolutionException,c#,asp.net-core,autofac,castle-dynamicproxy,C#,Asp.net Core,Autofac,Castle Dynamicproxy,我正在进行迁移,遇到了一个异常。Autofac可以从服务提供商的实例解析我的服务,但在请求时无法在我的控制器中获取它 异常:Castle.DynamicProxy.ProxyGe GenerationException:这是DynamicProxy 2错误:代理的目标类型实现Castle.DynamicProxy.IP roxyTargetAccessor是一个DynamicProxy基础设施接口,您永远不应该自己实现它 F您正在尝试代理现有代理吗 我的自动注册模块如下所示: public cl

我正在进行迁移,遇到了一个异常。Autofac可以从服务提供商的实例解析我的服务,但在请求时无法在我的控制器中获取它

异常:Castle.DynamicProxy.ProxyGe GenerationException:这是DynamicProxy 2错误:代理的目标类型实现Castle.DynamicProxy.IP roxyTargetAccessor是一个DynamicProxy基础设施接口,您永远不应该自己实现它 F您正在尝试代理现有代理吗

我的自动注册模块如下所示:

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

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

    /// <summary>
    /// Register's dependencies
    /// </summary>
    protected override void Load(ContainerBuilder builder)
    {
        var assemblies = new List<Assembly>();
        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);
    }
}
我的服务看起来像

 [Intercept(typeof(LogInterceptor))]
public class CategoriesService : ICategoriesService
{
     // some code here 
}
我试图通过将Autofac.Extensions.DependencyInjection包从6.0.0降级到5.0.1来修复它,但没有任何帮助

你可以在那里找到完整的Stacktrace


那么问题是如何修复异常并保持拦截器工作?

通过将Autofac.Extras.DynamicProxy软件包版本从4.5.0提高到5.0.0来修复。
希望它能帮助别人。

您应该在这里列出您的依赖列表。听起来你可能有点不对劲,但这里没有足够的信息。
 [Intercept(typeof(LogInterceptor))]
public class CategoriesService : ICategoriesService
{
     // some code here 
}