2

수년간 Autofac을 사용해 본 적이 있지만이 동작을 본 적이 없습니다. 빌드 후 응용 프로그램이 정상적으로 실행됩니다. 응용 프로그램 풀 (내가 Web.config의를 터치하여이 테스트) 재활용 후 그러나, , 나는이 DependencyResolutionException를 얻을 :응용 프로그램 풀 재활용 후 Autofac가 해결되지 않음

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 다른 종속성이 하나 명의 의존성을 가지고, 그러나 나는 그것이 재활용되기 전에 수행하기 때문에 을 해결할 수 있음을 안다. 왜 지구상에서 이런 일이 일어날까요 ???

나는과 같이 모든 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 : // docs .autofac.org/ko/latest/faq/iis-restart.html – Steven

+0

감사합니다. 스티븐 - 내 문제를 해결했습니다! – ItsJason

답변

2

위의 Steven의 의견 덕분에 다른 질문과 Autofac 사이트에서 답을 찾았습니다. 왜 내가 모르는 내 연구에서 이런 것들이 나타나지 않았는가.

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

솔루션 BuildManager.GetReferencedAssemblies().Cast<Assembly>()

으로

변경 AppDomain.CurrentDomain.GetAssemblies()

완료!

관련 문제