diff --git a/CallbackHandler/Program.cs b/CallbackHandler/Program.cs index f4dccb4..861c18c 100644 --- a/CallbackHandler/Program.cs +++ b/CallbackHandler/Program.cs @@ -70,31 +70,49 @@ public static IHostBuilder CreateHostBuilder(string[] args) }); hostBuilder.ConfigureWebHostDefaults(webBuilder => { - webBuilder.UseStartup(); - webBuilder.UseConfiguration(config); - webBuilder.UseKestrel(); - - IConfigurationSection isSentryConfigured = config.GetSection("SentryConfiguration"); - if (isSentryConfigured.Exists()) { - webBuilder.Configure((context, - app) => { - if (context.HostingEnvironment.IsDevelopment() == false) { - Version version = Assembly.GetExecutingAssembly().GetName().Version; - - webBuilder.UseSentry(o => { - - o.Dsn = ConfigurationReader.GetValueFromSection("SentryConfiguration", "Dsn"); - o.SendDefaultPii = true; // required for body + user data + // Configure per-environment configuration and build a snapshot so we can read settings here. + webBuilder.ConfigureAppConfiguration((context, configBuilder) => + { + var env = context.HostingEnvironment; + + configBuilder.SetBasePath(fi.Directory.FullName) + .AddJsonFile("hosting.json", optional: true) + .AddJsonFile($"hosting.{env.EnvironmentName}.json", optional: true) + .AddJsonFile("/home/txnproc/config/appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"/home/txnproc/config/appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) + .AddEnvironmentVariables(); + + // Build a snapshot of configuration so we can use it immediately (e.g. for Sentry) + var builtConfig = configBuilder.Build(); + + // Keep existing static usage (if you must), and initialise the ConfigurationReader now. + Startup.Configuration = builtConfig; + ConfigurationReader.Initialise(Startup.Configuration); + + // Configure Sentry on the webBuilder using the config snapshot. + var sentrySection = builtConfig.GetSection("SentryConfiguration"); + if (sentrySection.Exists()) + { + // Replace the condition below if you intended to only enable Sentry in certain environments. + if (env.IsDevelopment() == false) + { + webBuilder.UseSentry(o => + { + o.Dsn = builtConfig["SentryConfiguration:Dsn"]; + o.SendDefaultPii = true; o.MaxRequestBodySize = RequestSize.Always; o.CaptureBlockingCalls = true; - //o.CaptureFailedRequests = true; - o.Release = version != null ? version.ToString() : "unknown"; - + o.Release = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown"; }); } - }); + } + }); - } + webBuilder.UseStartup(); + webBuilder.UseConfiguration(config); + webBuilder.UseKestrel(); }); return hostBuilder; diff --git a/CallbackHandler/Startup.cs b/CallbackHandler/Startup.cs index 238832d..4fa8feb 100644 --- a/CallbackHandler/Startup.cs +++ b/CallbackHandler/Startup.cs @@ -25,14 +25,14 @@ public class Startup { public Startup(IWebHostEnvironment webHostEnvironment) { - IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) - .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) - .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true) - .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) - .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true) - .AddEnvironmentVariables(); + //IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(webHostEnvironment.ContentRootPath) + // .AddJsonFile("/home/txnproc/config/appsettings.json", true, true) + // .AddJsonFile($"/home/txnproc/config/appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true) + // .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + // .AddJsonFile($"appsettings.{webHostEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true) + // .AddEnvironmentVariables(); - Startup.Configuration = builder.Build(); + //Startup.Configuration = builder.Build(); Startup.WebHostEnvironment = webHostEnvironment; } @@ -109,7 +109,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerF app.UseSwagger(); app.UseSwaggerUI(); - } } }