Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 63 additions & 59 deletions EstateReportingAPI/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,22 @@ public static IHostBuilder CreateHostBuilder(string[] args)


//At this stage, we only need our hosting file for ip and ports
FileInfo fi = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
FileInfo fi = new(Assembly.GetExecutingAssembly().Location);

IConfigurationRoot config = new ConfigurationBuilder().SetBasePath(fi.Directory.FullName)
.AddJsonFile("hosting.json", optional: true)
.AddJsonFile("hosting.development.json", optional: true)
.AddEnvironmentVariables().Build();
ConfigureLogging();

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.UseWindowsService();
hostBuilder.UseLamar();
hostBuilder.ConfigureLogging(logging =>
{
logging.AddConsole();
logging.AddNLog();
});
return ConfigureWebHost(hostBuilder, fi.Directory.FullName);
}

private static void ConfigureLogging() {
String contentRoot = Directory.GetCurrentDirectory();
String nlogConfigPath = Path.Combine(contentRoot, "nlog.config");

Expand All @@ -43,61 +52,56 @@ public static IHostBuilder CreateHostBuilder(string[] args)
});
b.LoadConfigurationFromFile(nlogConfigPath);
});
}

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.UseWindowsService();
hostBuilder.UseLamar();
hostBuilder.ConfigureLogging(logging =>
{
logging.AddConsole();
logging.AddNLog();
});
private static IHostBuilder ConfigureWebHost(IHostBuilder hostBuilder, String basePath) {
hostBuilder.ConfigureWebHostDefaults(webBuilder =>
{
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 = ConfigurationReader.GetValueOrDefault("SentryConfiguration", "CaptureBlockingCalls", false);
o.IncludeActivityData = ConfigurationReader.GetValueOrDefault("SentryConfiguration", "IncludeActivityData", false);
o.Release = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown";
});
}
}
});

webBuilder.UseStartup<Startup>();
webBuilder.UseConfiguration(config);
webBuilder.UseKestrel();
});
{
webBuilder.ConfigureAppConfiguration((context, configBuilder) =>
{
IWebHostEnvironment env = context.HostingEnvironment;

configBuilder.SetBasePath(basePath)
.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();

// Keep existing static usage (if you must), and initialise the ConfigurationReader now.
Startup.Configuration = configBuilder.Build();
ConfigurationReader.Initialise(Startup.Configuration);

ConfigureSentry(env, webBuilder);
});

webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel();
});
return hostBuilder;
}
}

private static void ConfigureSentry(IWebHostEnvironment env,
IWebHostBuilder webBuilder) {
// Configure Sentry on the webBuilder using the config snapshot.
IConfigurationSection sentrySection = Startup.Configuration.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 = Startup.Configuration["SentryConfiguration:Dsn"];
o.SendDefaultPii = true;
o.MaxRequestBodySize = RequestSize.Always;
o.CaptureBlockingCalls = ConfigurationReader.GetValueOrDefault("SentryConfiguration", "CaptureBlockingCalls", false);
o.IncludeActivityData = ConfigurationReader.GetValueOrDefault("SentryConfiguration", "IncludeActivityData", false);
o.Release = Assembly.GetExecutingAssembly().GetName().Version?.ToString() ?? "unknown";
});
}
}
}
}
Loading