Referência nula da API do ASP.NET DI (Injetor Simples) na reciclagem do pool do IIS

Eu postei anteriormente outra pergunta, mas depois de algumas observações, reduzi-me ao que pode estar causando o meu problema. Basicamente, quando o Pool de Aplicativos IIS é reciclado, minha injeção de dependência (que acaba verificando algumas DLLs através da criação de um NWatchApplication) falha. INWatchApplication é uma dependência para o projeto de API da Web.

Aqui está o conteúdo do Global.asax:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    GlobalConfiguration.Configure(WebApiConfig.Register);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);

    var webApiContainer = new Container();
    webApiContainer.Options.DefaultScopedLifestyle = new WebApiRequestLifestyle();
    RegisterTypes(webApiContainer);
    webApiContainer.RegisterWebApiControllers(GlobalConfiguration.Configuration);
    webApiContainer.Verify();

    GlobalConfiguration.Configuration.DependencyResolver =
        new SimpleInjectorWebApiDependencyResolver(webApiContainer);
}

private void RegisterTypes(Container container)
{
    var virtualPath = HostingEnvironment.ApplicationVirtualPath.Substring(1);
    string baseName = null;

    if (!string.IsNullOrEmpty(virtualPath)) {
        baseName = HostingEnvironment.SiteName + "_" + virtualPath;
    } else {
        baseName = HostingEnvironment.SiteName;
    }

    var nWatchApp = new NWatchEntityApplication(GetNWatchConfig());
    Trace.Listeners.Add(new DevOps.Diagnostics.DevOpsLogTraceListener(baseName));
    container.RegisterSingleton<INWatchApplication>(nWatchApp);
    container.Register<NWatchDbContext>(() => nWatchApp.GetDbContext(), Lifestyle.Scoped);
}

private INWatchConfiguration GetNWatchConfig()
{
    Configuration rootConfig =
        System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(HostingEnvironment.ApplicationVirtualPath);
    return new NWatchSystemConfiguration(rootConfig);
}

Eu li vários blogs e postagens falando sobre como DLLs carregadas dinamicamente parecem ser um problema, porque quando o IIS recicla os pools, eles não são copiados para o AppDomain. (Eu poderia estar totalmente errado aqui, mas é minha suspeita).

Como garantir que todas as DLLs que podem ter sido carregadas (quando o Aplicativo foi implantado pela primeira vez no IIS) continuem disponíveis para o Aplicativo, mesmo após uma reciclagem?

questionAnswers(1)

yourAnswerToTheQuestion