簡體   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