Нулевая ссылка DI (Simple Injector) ASP.NET API на перезапуск пула IIS

Ранее я писал другой вопрос, но после некоторых наблюдений я сузился до того, что может быть причиной моей проблемы. По сути, после перезапуска пула приложений IIS моя инъекция зависимостей (которая заканчивается сканированием некоторых библиотек DLL путем создания NWatchApplication) завершается неудачно. INWatchApplication является зависимостью для проекта Web API.

Вот содержимое 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);
}

Я читал различные блоги и сообщения о том, как динамически загружаемые библиотеки DLL кажутся проблемой, потому что, когда IIS перезагружает пулы, они не копируются в домен приложений. (Я могу быть совершенно не прав, но это мое подозрение).

Как я могу гарантировать, что все библиотеки DLL, которые могли быть загружены (когда приложение было впервые развернуто в IIS), по-прежнему доступны для приложения даже после перезапуска?

Ответы на вопрос(1)

Ваш ответ на вопрос