This commit is contained in:
2024-06-04 16:15:09 +01:00
parent e40876aeb2
commit 2f6395485a
123 changed files with 11943 additions and 314 deletions
+1
View File
@@ -100,6 +100,7 @@ namespace Saxonite.Net.Core.Web.Base.App
{
public Dictionary<Sax.Database, DatabaseConfig> Databases { get; } = new Dictionary<Sax.Database, DatabaseConfig>();
public DatabaseConfig Core { get { return Databases.GetValue(Sax.Database.Core, new DatabaseConfig()); } }
public DatabaseConfig Reference { get { return Databases.GetValue(Sax.Database.Reference, new DatabaseConfig()); } }
public DatabaseConfig Support { get { return Databases.GetValue(Sax.Database.Support, new DatabaseConfig()); } }
}
public DatabasesConfig Databases { get; } = new DatabasesConfig();
+57 -4
View File
@@ -1,4 +1,6 @@
using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
@@ -10,8 +12,10 @@ using Sarand.Net.Standard.Dbas.Data;
using Saxonite.Net.Core.Web.Base.Consoles;
using Saxonite.Net.Standard.Base.App;
using Saxonite.Net.Standard.Base.Consoles;
using Saxonite.Net.Standard.Base.Helpers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
@@ -34,15 +38,17 @@ namespace Saxonite.Net.Core.Web.Base.App
public SaxSessionContext_Web SessionContext { get; }
public Dictionary<Sax.Database, ISacsDatabase> Databases { get; } = new Dictionary<Sax.Database, ISacsDatabase>();
public ISacsDatabase CoreDatabase { get { return Databases.GetValue(Sax.Database.Core, null); } }
public ISacsDatabase ReferenceDatabase { get { return Databases.GetValue(Sax.Database.Reference, null); } }
public ISacsDatabase SupportDatabase { get { return Databases.GetValue(Sax.Database.Support, null); } }
}
//-------------------------------------------------------------------
// Protected construction.
protected SaxApplication_Web()
protected SaxApplication_Web(Sax.Application applicationType)
{
WebApp = this;
System_Web = new SaxSystem_Web();
ApplicationType = applicationType;
}
protected override void Dispose(bool disposing)
{
@@ -57,6 +63,7 @@ namespace Saxonite.Net.Core.Web.Base.App
//-------------------------------------------------------------------
// Globals.
public static SaxApplication_Web WebApp { get; private set; }
public Sax.Application ApplicationType { get; }
public override SaxSystem System { get { return System_Web; } }
public SaxSystem_Web System_Web { get; private set; }
// Application instance.
@@ -72,7 +79,51 @@ namespace Saxonite.Net.Core.Web.Base.App
public override IDatabaseInfo CreateDbInfo(SaxSessionContext sessionContext, Sax.Database databaseType) { return new DbDataItem.DatabaseInfo(GetDatabase(sessionContext, databaseType)); }
// Configuration.
public IConfiguration Configuration { get; protected set; }
public IConfiguration SaxConfiguration { get; protected set; }
public IConfiguration SaxConfiguration { get; private set; }
//-------------------------------------------------------------------
protected void InitEnvironment(IWebHostEnvironment env, String logFilenamePrefix)
{
Development = env.IsDevelopment();
environmentName = env.EnvironmentName;
SaxConfiguration = LoadApplicationConfiguration();
// Configure logging.
SaLogger.LogFilenamePrefix = logFilenamePrefix;
SaLogger.IncludeHostInFileMessage = false;
SaLogger.IncludeUserInFileMessage = false;
//Messages.Add($"Host: {SaxSystem.ComputerName}");
//Messages.Add($"Config file: appsettings.machine.{SaxSystem.ComputerName}.json");
}
//-------------------------------------------------------------------
// Application configuration.
private IConfiguration LoadApplicationConfiguration()
{
// Load configuration resource files.
// Later files override values from previous.
var builder =
new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddEnvironmentVariables();
// Saxonite Web configuration - shared by all applications.
Stream configStream = SaxResourceHelper.GetResourceStream("appsettings.json", "Config");
if (configStream != null) builder.AddJsonStream(configStream);
configStream = SaxResourceHelper.GetResourceStream($"appsettings.{environmentName}.json", "Config");
if (configStream != null) builder.AddJsonStream(configStream);
configStream = SaxResourceHelper.GetResourceStream($"appsettings.machine.{SaxSystem.ComputerName}.json", "Config");
if (configStream != null) builder.AddJsonStream(configStream);
// Application specific configuration.
builder
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: false)
.AddJsonFile($"appsettings.machine.{SaxSystem.ComputerName}.json", optional: true, reloadOnChange: false);
return builder.Build();
}
//-------------------------------------------------------------------
// Database configuration.
@@ -103,13 +154,15 @@ namespace Saxonite.Net.Core.Web.Base.App
applicationParams.Add("Environment", EnvironmentName);
if (!StringUtil.IsBlank(AppConfig.Databases.Core.Location))
applicationParams.Add("Database - Core", AppConfig.Databases.Core.Location);
if (!StringUtil.IsBlank(AppConfig.Databases.Reference.Location))
applicationParams.Add("Database - Reference", AppConfig.Databases.Reference.Location);
if (!StringUtil.IsBlank(AppConfig.Databases.Support.Location))
applicationParams.Add("Database - Support", AppConfig.Databases.Support.Location);
applicationParams.Add("Application root", SaxSystem.ApplicationFolder);
if (!StringUtil.IsEmpty(AppConfig.Documents.RootFolder))
applicationParams.Add("Documents root", AppConfig.Documents.RootFolder);
applicationParams.Add("Email context", AppConfig.Email.Context + (!StringUtil.IsEmpty(EmailConfig.SMTP.Server) ? " [" + EmailConfig.SMTP.Server + "]" : ""));
SaLogger.Info(fn + " Application start." + applicationParams.Select(item => StringUtil.PadRight(item.Item1 + ":", 20, ' ') + item.Item2).Concat("", "\n\t"), true);
SaLogger.Info(fn + " Application start." + applicationParams.Select(item => StringUtil.PadRight(item.Item1 + ":", 23, ' ') + " " + item.Item2).Concat("", "\n\t"), true);
if (StringUtil.IsEmpty(EmailConfig.SMTP.Server) || StringUtil.IsEmpty(EmailConfig.Message.AddressFrom))
SaLogger.Warn(fn + " Incomplete email configuration.", true);
}
+7 -3
View File
@@ -63,12 +63,13 @@ namespace Saxonite.Net.Core.Web.Base.App
// Authentication service.
// Required to handle 'Forbidden' responses etc.
config.services
.AddAuthentication(options => {
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = "forbidScheme";
options.DefaultForbidScheme = "forbidScheme";
options.AddScheme<SaxAuthenticationHandler>("forbidScheme", "Handle Forbidden");
});
});
// Added to support memory caching of sessions.
config.services.AddMemoryCache();
//config.services.AddDistributedMemoryCache(); - for multiple web servers.
@@ -91,11 +92,14 @@ namespace Saxonite.Net.Core.Web.Base.App
// Modify pages during debug.
#if DEBUG
if (SaxSystem.DebugMode)
{
// If the following line throws an error such as:
// 'imvcbuilder' does not contain a definition for 'addrazorruntimecompilation'
// Revert the NuGet Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation package
// to a previous version and then reinstal the latest version.
config.services.AddRazorPages().AddRazorRuntimeCompilation();
//config.services.AddControllersWithViews().AddRazorRuntimeCompilation();
}
#endif
config.services.AddMvc