This commit is contained in:
2019-10-22 19:24:30 +00:00
parent 9bb657818d
commit 4da7fbee0d
4 changed files with 90 additions and 15 deletions

View File

@@ -11,7 +11,6 @@ UPDATE all the things before commencing work
- https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcoreannotations - https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcoreannotations
- -
- Get tests passing
- See about Metrics which is currently commented out in startup, maybe not an issue right now?! - See about Metrics which is currently commented out in startup, maybe not an issue right now?!
- Read this and see if more areas where I need to update my code to the modern standard: https://kimsereyblog.blogspot.com/2018/08/apicontroller-attribute-in-asp-net-core.html - Read this and see if more areas where I need to update my code to the modern standard: https://kimsereyblog.blogspot.com/2018/08/apicontroller-attribute-in-asp-net-core.html
- Find and read changes for 3.1 dotnet core and Note that that above is for v2.2 my controllers appear to date from the v1 .net core era and I will need to then move them to the .netcore 3.1 era changes - Find and read changes for 3.1 dotnet core and Note that that above is for v2.2 my controllers appear to date from the v1 .net core era and I will need to then move them to the .netcore 3.1 era changes

View File

@@ -5,6 +5,7 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore; using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@@ -32,6 +33,10 @@ namespace AyaNova
ServerBootConfig.SetConfiguration(config); ServerBootConfig.SetConfiguration(config);
#region Initialize Logging #region Initialize Logging
//NOTE: there is a logging issue that breaks all this with .net 3.1 hostbuilder vs webhostbuilder but webhostbuilder will be deprecated so we need to work around it
//the discussion about that is here: https://github.com/aspnet/AspNetCore/issues/9337
//NLOG OFFICIAL GUIDELINES FOR .net core 3.x https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-3
//default log level //default log level
NLog.LogLevel NLogLevel = NLog.LogLevel.Info; NLog.LogLevel NLogLevel = NLog.LogLevel.Info;
@@ -185,7 +190,8 @@ namespace AyaNova
try try
{ {
BuildWebHost(args, logger).Run(); //BuildWebHost(args, logger).Run();
BuildHost(args, logger).Build().Run();
} }
catch (Exception e) catch (Exception e)
{ {
@@ -196,6 +202,75 @@ namespace AyaNova
public static IHostBuilder BuildHost(string[] args, NLog.Logger logger)
{
logger.Debug("BOOT: building host");
var configuration = new ConfigurationBuilder().AddCommandLine(args).Build();
return Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseSetting("detailedErrors", "true")
.UseUrls(ServerBootConfig.AYANOVA_USE_URLS)//default port and urls, set first can be overridden by any later setting here
.UseConfiguration(configuration)//support command line override of port (dotnet run urls=http://*:8081)
.UseIISIntegration()//support IIS integration just in case, it appears here to override prior settings if necessary (port)
.ConfigureMetricsWithDefaults(builder =>
{
if (ServerBootConfig.AYANOVA_METRICS_USE_INFLUXDB)
{
builder.Report.ToInfluxDb(
options =>
{
options.InfluxDb.BaseUri = new Uri(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_BASEURL);
options.InfluxDb.Database = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_DBNAME;
if (!string.IsNullOrWhiteSpace(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_CONSISTENCY))
{
options.InfluxDb.Consistenency = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_CONSISTENCY;
}
options.InfluxDb.UserName = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_USERNAME;
options.InfluxDb.Password = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_PASSWORD;
if (!string.IsNullOrWhiteSpace(ServerBootConfig.AYANOVA_METRICS_INFLUXDB_RETENTION_POLICY))
{
options.InfluxDb.RetentionPolicy = ServerBootConfig.AYANOVA_METRICS_INFLUXDB_RETENTION_POLICY;
}
options.InfluxDb.CreateDataBaseIfNotExists = true;
options.HttpPolicy.BackoffPeriod = TimeSpan.FromSeconds(30);
options.HttpPolicy.FailuresBeforeBackoff = 5;
options.HttpPolicy.Timeout = TimeSpan.FromSeconds(10);
//options.MetricsOutputFormatter = new App.Metrics.Formatters.Json.MetricsJsonOutputFormatter();
//options.Filter = filter;
options.FlushInterval = TimeSpan.FromSeconds(20);
});
}
})
.UseMetricsEndpoints(opt =>
{
opt.EnvironmentInfoEndpointEnabled = false;
opt.MetricsEndpointEnabled = false;
opt.MetricsTextEndpointEnabled = false;
})
.UseMetrics()
.UseStartup<Startup>()
.ConfigureLogging((context, logging) =>
{
// clear all previously registered providers
//https://stackoverflow.com/a/46336988/8939
logging.ClearProviders();
})
.UseNLog(); // NLog: setup NLog for Dependency injection
});
}
/* Dotnet 2.2 buildwebhost will be deprecated in favor of buildhost
public static IWebHost BuildWebHost(string[] args, NLog.Logger logger) public static IWebHost BuildWebHost(string[] args, NLog.Logger logger)
{ {
logger.Debug("BOOT: building web host"); logger.Debug("BOOT: building web host");
@@ -256,6 +331,7 @@ namespace AyaNova
.UseNLog() // NLog: setup NLog for Dependency injection .UseNLog() // NLog: setup NLog for Dependency injection
.Build(); .Build();
} }
*/
}//eoc }//eoc

View File

@@ -438,11 +438,11 @@ namespace AyaNova.Biz
#if (DEBUG) #if (DEBUG)
//TESTING //TESTING
//make a fake server error for ui testing purposes //make a fake server error for ui testing purposes
if (proposedObj.Count == 666) // if (proposedObj.Count == 666)
{ // {
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Count", "Test field server error"); // AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "Count", "Test field server error");
} // }
if (proposedObj.DollarAmount == 666) if (proposedObj.DollarAmount == 666.66M)
{ {
AddError(ApiErrorCode.INVALID_OPERATION, null, "This is a test of a general server error"); AddError(ApiErrorCode.INVALID_OPERATION, null, "This is a test of a general server error");
} }

View File

@@ -1,4 +1,4 @@
REM docker start dock-pg10 dock-pgadmin REM docker start dock-pg10 dock-pgadmin
REM docker run --rm --name pg -p 5432:5432 -e POSTGRES_PASSWORD=raven -e POSTGRES_DB=AyaNova -d postgres:latest REM docker run --rm --name pg -p 5432:5432 -e POSTGRES_PASSWORD=raven -e POSTGRES_DB=AyaNova -d postgres:latest
REM GONE PORTABLE INSTEAD REM GONE PORTABLE INSTEAD
start C:\data\code\PostgreSQLPortable_10.4.1\postgresqlportable.exe start C:\data\code\PostgreSQLPortable_12.0\postgresqlportable.exe