[英]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.