重新启动IIS网站后尚未注册类
本文关键字:注册 IIS 网站 重新启动 | 更新日期: 2023-09-27 18:26:45
我在IIS中创建了一个网站。重建我的应用程序,一切正常,但在重新启动IIS网站后,出现了一个错误:
Autofac.Core.Registration.ComponentNotRegisteredException:已注册的服务"WYC.Core.Services.BlogService"尚未注册。若要避免此异常,请注册一个组件以提供服务,使用IsRegistered()检查服务注册,或者使用ResolveOption()方法解析可选依赖项。
发生了什么事?为什么?我的方式:
container.RegisterAssemblyTypes(assemblies)
.Where(t => t.Name.EndsWith("Service"))
.SingleInstance()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
IIS回收应用程序池时,会根据需要加载程序集。不建议在IIS中使用AppDomain.CurrentDomain.GetAssemblies()
,因为可能尚未加载所有程序集。
为了避免此问题,您可以在System.Web.Compilation.BuildManager
上使用GetReferencedAssemblies
方法
var assemblies = BuildManager.GetReferencedAssemblies();
container.RegisterAssemblyTypes(assemblies)
.Where(t => t.Name.EndsWith("Service"))
.SingleInstance()
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
上面的代码应该在IIS回收过程之后工作。
有关详细信息,请参阅IIS重新启动后为什么不扫描我的程序集。