私は何年もオートファックを使用してきましたが、この動作は見られませんでした。 しかし、アプリケーションプールがリサイクルされる後(私は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);
関連:https://stackoverflow.com/questions/37713188/asp-net-api-di-simple-injector-null-reference-on-iis-pool-recycle – Steven
も参照します。http://ドキュメントを.autofac.org/ja/latest/faq/iis-restart.html – Steven
ありがとうスティーブン - 私の問題を解決しました! – ItsJason