繁体   English   中英

重新启动IIS网站后,类尚未注册

[英]Class has not been registered after restart IIS website

我已经在IIS中创建了一个网站。 重建我的应用程序,一切正常,但是重新启动IIS网站后,出现错误:

Autofac.Core.Registration.CompoentNotRegisteredException:已注册的服务“ WYC.Core.Services.BlogService”尚未注册。 为避免此异常,请注册一个组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解决可选的依赖项。

发生了什么事? 为什么? 我的方式:

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重新启动后为什么不扫描我的程序集以获取更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM