// This method gets called by the runtime. Use this method to add services to the container. public virtual void ConfigureServices(IServiceCollection services) { services.AddDevelopmentIdentityProvider(Configuration); Core.Registration.IFhirServerBuilder fhirServerBuilder = services.AddFhirServer(Configuration) .AddExportWorker() .AddKeyVaultSecretStore(Configuration) .AddAzureExportDestinationClient(); string dataStore = Configuration["DataStore"]; if (dataStore.Equals(KnownDataStores.CosmosDb, StringComparison.InvariantCultureIgnoreCase)) { fhirServerBuilder.AddCosmosDb(Configuration); } else if (dataStore.Equals(KnownDataStores.SqlServer, StringComparison.InvariantCultureIgnoreCase)) { fhirServerBuilder.AddExperimentalSqlServer(); } else if (dataStore.Equals(KnownDataStores.DynamicsCrm, StringComparison.InvariantCultureIgnoreCase)) { fhirServerBuilder.AddExperimentalSqlServer(); } AddApplicationInsightsTelemetry(services); }
// This method gets called by the runtime. Use this method to add services to the container. public virtual void ConfigureServices(IServiceCollection services) { services.AddDevelopmentIdentityProvider(Configuration); Core.Registration.IFhirServerBuilder fhirServerBuilder = services.AddFhirServer(Configuration) .AddAzureExportDestinationClient() .AddAzureExportClientInitializer(Configuration) .AddContainerRegistryTokenProvider() .AddAzureIntegrationDataStoreClient(Configuration) .AddConvertData() .AddMemberMatch(); string dataStore = Configuration["DataStore"]; if (dataStore.Equals(KnownDataStores.CosmosDb, StringComparison.OrdinalIgnoreCase)) { fhirServerBuilder.AddCosmosDb(); } else if (dataStore.Equals(KnownDataStores.SqlServer, StringComparison.OrdinalIgnoreCase)) { fhirServerBuilder.AddSqlServer(config => { Configuration?.GetSection(SqlServerDataStoreConfiguration.SectionName).Bind(config); }); } // Set task hosting and related background service if (bool.TryParse(Configuration["TaskHosting:Enabled"], out bool taskHostingsOn) && taskHostingsOn) { AddTaskHostingService(services); } /* * The execution of IHostedServices depends on the order they are added to the dependency injection container, so we * need to ensure that the schema is initialized before the background workers are started. */ fhirServerBuilder.AddBackgroundWorkers(); if (string.Equals(Configuration["ASPNETCORE_FORWARDEDHEADERS_ENABLED"], "true", StringComparison.OrdinalIgnoreCase)) { services.Configure <ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; // Only loopback proxies are allowed by default. // Clear that restriction because forwarders are enabled by explicit // configuration. options.KnownNetworks.Clear(); options.KnownProxies.Clear(); }); } if (bool.TryParse(Configuration["PrometheusMetrics:enabled"], out bool prometheusOn) && prometheusOn) { services.AddPrometheusMetrics(Configuration); } AddApplicationInsightsTelemetry(services); }
// This method gets called by the runtime. Use this method to add services to the container. public virtual void ConfigureServices(IServiceCollection services) { services.AddDevelopmentIdentityProvider(Configuration); Core.Registration.IFhirServerBuilder fhirServerBuilder = services.AddFhirServer(Configuration) .AddBackgroundWorkers() .AddAzureExportDestinationClient() .AddAzureExportClientInitializer(Configuration); string dataStore = Configuration["DataStore"]; if (dataStore.Equals(KnownDataStores.CosmosDb, StringComparison.InvariantCultureIgnoreCase)) { fhirServerBuilder.AddCosmosDb(); } else if (dataStore.Equals(KnownDataStores.SqlServer, StringComparison.InvariantCultureIgnoreCase)) { fhirServerBuilder.AddSqlServer(); } if (string.Equals(Configuration["ASPNETCORE_FORWARDEDHEADERS_ENABLED"], "true", StringComparison.OrdinalIgnoreCase)) { services.Configure <ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; // Only loopback proxies are allowed by default. // Clear that restriction because forwarders are enabled by explicit // configuration. options.KnownNetworks.Clear(); options.KnownProxies.Clear(); }); } if (bool.TryParse(Configuration["PrometheusMetrics:enabled"], out bool prometheusOn) && prometheusOn) { services.AddPrometheusMetrics(Configuration); } AddApplicationInsightsTelemetry(services); }