public void ConfigureServices(IServiceCollection services) { var serviceProvider = services.BuildServiceProvider(); var config = serviceProvider.GetService <IConfiguration>(); var getDateTimeOffset = serviceProvider.GetService <Func <DateTimeOffset> >(); if (getDateTimeOffset == null) { getDateTimeOffset = () => DateTimeOffset.UtcNow; services.AddSingleton(getDateTimeOffset); } var webAppAndElmAppConfig = serviceProvider.GetService <WebAppAndElmAppConfig>(); if (webAppAndElmAppConfig == null) { throw new Exception("Missing reference to the web app config."); } { var letsEncryptOptions = webAppAndElmAppConfig.WebAppConfiguration?.letsEncryptOptions; if (letsEncryptOptions == null) { _logger.LogInformation("I did not find 'letsEncryptOptions' in the configuration. I continue without Let's Encrypt."); } else { _logger.LogInformation("I found 'letsEncryptOptions' in the configuration."); services.AddFluffySpoonLetsEncryptRenewalService(letsEncryptOptions); services.AddFluffySpoonLetsEncryptFileCertificatePersistence(); services.AddFluffySpoonLetsEncryptMemoryChallengePersistence(); } } Asp.ConfigureServices(services); }