2

私は何年もオートファックを使用してきましたが、この動作は見られませんでした。 しかしアプリケーションプールがリサイクルされる後(私はweb.configファイルをタッチして、これをテストした)、私はDependencyResolutionExceptionを得る:アプリケーションプールのリサイクル後に自動ファンクションが解決されない

None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Namespace.Controllers.HomeController' can be invoked with the available services and parameters

にHomeControllerは、他の依存関係を持っている1つの依存関係を持っていますしかし、私はそれがリサイクルされる前に、を解決することを知っています。なぜ地球上でこれが起こるだろうか???

私はそうのようにすべてをautowire:

public static IContainer GetAutoFacContainer() 
{ 
    var builder = new ContainerBuilder(); 
    var assembliesToRegister = AppDomain.CurrentDomain.GetAssemblies() 
     .Where(a => a.FullName.StartsWith("Prefix")).ToArray(); 
    builder.RegisterAssemblyTypes(assembliesToRegister) 
     .AsImplementedInterfaces().AsSelf().PropertiesAutowired().InstancePerLifetimeScope(); 
    return builder.Build(); 
} 

は、それから私は、WebAPIの MVCコントローラ用のコンテナを使用しています。

var autoFacContainer = DependencyRegistrar.GetAutoFacContainer(); 
DependencyResolver.SetResolver(new AutofacDependencyResolver(autoFacContainer)); 
GlobalConfiguration.Configuration.DependencyResolver = 
    new AutofacWebApiDependencyResolver(autoFacContainer); 
+1

関連:https://stackoverflow.com/questions/37713188/asp-net-api-di-simple-injector-null-reference-on-iis-pool-recycle – Steven

+3

も参照します。http://ドキュメントを.autofac.org/ja/latest/faq/iis-restart.html – Steven

+0

ありがとうスティーブン - 私の問題を解決しました! – ItsJason

答えて

2

上記のStevenのコメントのおかげで、私は他の質問とAutofacサイトで答えを見つけました。私が知らない私の研究でこれらが決して現れなかった理由。

http://docs.autofac.org/en/latest/faq/iis-restart.html

ソリューション

変更AppDomain.CurrentDomain.GetAssemblies()

完了BuildManager.GetReferencedAssemblies().Cast<Assembly>()

に!

関連する問題