.NET 4.0升级至4.8后Autofac无法解析IQMService依赖报错
无法解析已注册的IQMService类型,报错“找不到可访问构造器”
报错信息如下:
Error:No accessible constructors were found for the type '__ASP.FastObjectFactory_app_web_gmbeg5il'.
调用Resolve的代码
public IQMService qMService; public QMModule QMModule; public PageBase() { qMService = AutofacDependency.Resolve<IQMService>(); QMModule = new QMModule(qMService); }
模型定义
public interface IQMService{ somefunction(); } public class QMService : IQMService{ public QMService() { someprocess(); } }
升级前可正常运行的Autofac配置代码
static AutofacDependency() { Assembly[] assemblys = AppDomain.CurrentDomain.GetAssemblies(); var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(assemblys); builder.RegisterModule(new ConfigurationSettingsReader("autofac")); container = builder.Build(); }
升级后的Autofac配置修改(仍报错)
将.NET从4.0升级到4.8、Autofac从3.5.2更新到6.4.0后,ConfigurationSettingsReader已不存在,因此更新配置文件并修改代码如下,但问题未解决:
static AutofacDependency() { Assembly[] assemblys = AppDomain.CurrentDomain.GetAssemblies(); var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(assemblys); //builder.RegisterModule (new ConfigurationSettingsReader ("autofac")); ConfigurationBuilder cfgbuilder = new ConfigurationBuilder(); cfgbuilder.AddXmlFile("autofac.config"); var module = new ConfigurationModule(cfgbuilder.Build()); builder.RegisterModule(module); container = builder.Build(); }
额外尝试的注册方式(仍报错)
static AutofacDependency() { Assembly[] assemblys = AppDomain.CurrentDomain.GetAssemblies(); var builder = new ContainerBuilder(); builder.RegisterAssemblyTypes(assemblys); builder.RegisterType<Strix.QM.Service.QMService>().As<Strix.QM.Service.IQMService>().InstancePerLifetimeScope(); container = builder.Build(); }
尽管已为QMService定义无参构造器,且尝试了手动注册接口与实现,仍始终出现“找不到可访问构造器”的报错,恳请提供帮助,若缺少必要信息可补充。
内容的提问来源于stack exchange,提问作者Auzout
相关产品推荐
相关产品推荐

