Autofac.Extras.DynamicProxy2 v3.0.6出现异常

本文关键字:6出 异常 v3 Extras DynamicProxy2 Autofac | 更新日期: 2023-09-27 18:00:48

我使用Autofac.Extras.DynamicProxy2来实现我的AOP策略
我将Autofac.Extras.DynamicProxy2更新到v3.0.6,我得到了一个异常:

组件Activator=LookupService(ReflectionActivator(,服务=[WordBook.Protocols.Logic.ILookupService],生存期=Autofac.Core.Lifetime.CurrentScopeLifetime,共享=无,所有权=OwnedByLifetimeScope不能使用接口拦截,因为它提供的服务不是公开可见的接口。检查您的注册组件以确保您没有启用拦截并将其注册为内部/专用接口类型。

这是我的源代码:

ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<ExceptionInterceptor>();
builder.RegisterAssemblyTypes(Assembly.Load("WordBookLogics")).AsImplementedInterfaces().EnableInterfaceInterceptors();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

它适用于Autofac.Extras.DynamicProxy2 v3.0.5。

更新时需要调整吗?

Autofac.Extras.DynamicProxy2 v3.0.6出现异常

我想我发现了问题。

在Autofac.Extras.DynamicProxy2 v3.0.5中,RegistrationExtension.cs的第300行具有IsVisible条件。

但是,在Autofac.Extras.DynamicProxy2 v3.0.6中,IsVisible条件被替换为Assembly.IsIInternalToDynamicProxy((。

我的公共接口的IsVisible属性为true,但我在公共接口上调用Assembly.IsIInternalToDynamicProxy((的结果为false。

所以,我的公共接口是可见的,但它并不意味着是dynamicproxy内部的。

这就是我的拦截不起作用的原因,并在Autofac.Extras.DynamicProxy2 v3.0.6中得到了异常。

我只等待Autofac.Extras.DynamicProxy2的所有者修复它。