Skip to content

Commit

Permalink
Add configuration extensions methods
Browse files Browse the repository at this point in the history
  • Loading branch information
support committed Dec 14, 2023
1 parent a49cd4d commit 7b157a0
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 128 deletions.
47 changes: 4 additions & 43 deletions src/Web/Grand.Web.Admin/Program.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Grand.Infrastructure.Configuration;
using Grand.Web.Admin.Extensions;
using Grand.Web.Admin.Extensions;
using Grand.Web.Common.Extensions;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
Expand All @@ -23,49 +21,12 @@
.Enrich.FromLogContext());

//add configuration
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
config.AddJsonFile("App_Data/appsettings.json", optional: false, reloadOnChange: true);
config.AddEnvironmentVariables();
if (args != null)
{
config.AddCommandLine(args);
var settings = config.Build();
var appsettings = settings["appsettings"];
var param = settings["Directory"];
if (!string.IsNullOrEmpty(appsettings) && !string.IsNullOrEmpty(param))
config.AddJsonFile($"App_Data/{param}/appsettings.json", optional: false, reloadOnChange: true);
}

});
builder.Configuration.AddAppSettingsJsonFile(args);

//add services
Grand.Infrastructure.StartupBase.ConfigureServices(builder.Services, builder.Configuration);

//Allow non ASCII chars in headers
var config = new AppConfig();
builder.Configuration.GetSection("Application").Bind(config);
if (config.AllowNonAsciiCharInHeaders)
{
builder.WebHost.ConfigureKestrel(options =>
{
options.ResponseHeaderEncodingSelector = _ => Encoding.UTF8;
});
}
if (config.MaxRequestBodySize.HasValue)
{
builder.WebHost.ConfigureKestrel(host =>
{
host.Limits.MaxRequestBodySize = config.MaxRequestBodySize.Value;
});

builder.Services.Configure<Microsoft.AspNetCore.Http.Features.FormOptions>(opt =>
{
opt.MultipartBodyLengthLimit = config.MaxRequestBodySize.Value;
});

}
builder.ConfigureApplicationSettings();

if (builder.Environment.IsDevelopment())
{
Expand Down
54 changes: 54 additions & 0 deletions src/Web/Grand.Web.Common/Extensions/ConfigurationExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using Grand.Infrastructure.Configuration;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace Grand.Web.Common.Extensions
{
public static class ConfigurationExtensions
{

public static void AddAppSettingsJsonFile(this IConfigurationManager configuration, string[] args)
{
configuration.AddJsonFile("App_Data/appsettings.json");
configuration.AddEnvironmentVariables();
if (args.Any())
{
configuration.AddCommandLine(args);
var appSettings = configuration["appsettings"];
if (!string.IsNullOrEmpty(appSettings))
{
configuration.AddJsonFile($"App_Data/{appSettings}/appsettings.json");
}
}
}
public static void ConfigureApplicationSettings(this WebApplicationBuilder builder)
{
//Allow non ASCII chars in headers
var config = new AppConfig();
builder.Configuration.GetSection("Application").Bind(config);
if (config.AllowNonAsciiCharInHeaders)
{
builder.WebHost.ConfigureKestrel(options =>
{
options.ResponseHeaderEncodingSelector = _ => Encoding.UTF8;
});
}
if (config.MaxRequestBodySize.HasValue)
{
builder.WebHost.ConfigureKestrel(host =>
{
host.Limits.MaxRequestBodySize = config.MaxRequestBodySize.Value;
});

builder.Services.Configure<FormOptions>(opt =>
{
opt.MultipartBodyLengthLimit = config.MaxRequestBodySize.Value;
});

}
}
}
}
45 changes: 3 additions & 42 deletions src/Web/Grand.Web.Vendor/Program.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Grand.Infrastructure.Configuration;
using Grand.Web.Common.Extensions;
using Grand.Web.Vendor.Extensions;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
Expand All @@ -23,49 +21,12 @@
.Enrich.FromLogContext());

//add configuration
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
config.AddJsonFile("App_Data/appsettings.json", optional: false, reloadOnChange: true);
config.AddEnvironmentVariables();
if (args != null)
{
config.AddCommandLine(args);
var settings = config.Build();
var appsettings = settings["appsettings"];
var param = settings["Directory"];
if (!string.IsNullOrEmpty(appsettings) && !string.IsNullOrEmpty(param))
config.AddJsonFile($"App_Data/{param}/appsettings.json", optional: false, reloadOnChange: true);
}

});
builder.Configuration.AddAppSettingsJsonFile(args);

//add services
Grand.Infrastructure.StartupBase.ConfigureServices(builder.Services, builder.Configuration);

//Allow non ASCII chars in headers
var config = new AppConfig();
builder.Configuration.GetSection("Application").Bind(config);
if (config.AllowNonAsciiCharInHeaders)
{
builder.WebHost.ConfigureKestrel(options =>
{
options.ResponseHeaderEncodingSelector = _ => Encoding.UTF8;
});
}
if (config.MaxRequestBodySize.HasValue)
{
builder.WebHost.ConfigureKestrel(host =>
{
host.Limits.MaxRequestBodySize = config.MaxRequestBodySize.Value;
});

builder.Services.Configure<Microsoft.AspNetCore.Http.Features.FormOptions>(opt =>
{
opt.MultipartBodyLengthLimit = config.MaxRequestBodySize.Value;
});

}
builder.ConfigureApplicationSettings();

if (builder.Environment.IsDevelopment())
{
Expand Down
47 changes: 4 additions & 43 deletions src/Web/Grand.Web/Program.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
using Grand.Infrastructure.Configuration;
using Grand.Web.Common.Extensions;
using Grand.Web.Common.Startup;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
Expand All @@ -20,54 +17,18 @@
builder.Services.AddLogging();

//use serilog
builder.Host.UseSerilog((context, services, configuration) => configuration
builder.Host.UseSerilog((context, _, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.Enrich.FromLogContext());

//add configuration
builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath);
config.AddJsonFile("App_Data/appsettings.json", optional: false, reloadOnChange: true);
config.AddEnvironmentVariables();
if (args != null)
{
config.AddCommandLine(args);
var settings = config.Build();
var appsettings = settings["appsettings"];
var param = settings["Directory"];
if (!string.IsNullOrEmpty(appsettings) && !string.IsNullOrEmpty(param))
config.AddJsonFile($"App_Data/{param}/appsettings.json", optional: false, reloadOnChange: true);
}

});
builder.Configuration.AddAppSettingsJsonFile(args);

//add services
StartupBase.ConfigureServices(builder.Services, builder.Configuration);

//Allow non ASCII chars in headers
var config = new AppConfig();
builder.Configuration.GetSection("Application").Bind(config);
if (config.AllowNonAsciiCharInHeaders)
{
builder.WebHost.ConfigureKestrel(options =>
{
options.ResponseHeaderEncodingSelector = _ => Encoding.UTF8;
});
}
if (config.MaxRequestBodySize.HasValue)
{
builder.WebHost.ConfigureKestrel(host =>
{
host.Limits.MaxRequestBodySize = config.MaxRequestBodySize.Value;
});

builder.Services.Configure<FormOptions>(opt =>
{
opt.MultipartBodyLengthLimit = config.MaxRequestBodySize.Value;
});
builder.ConfigureApplicationSettings();

}
//register task
builder.Services.RegisterTasks();

Expand Down

0 comments on commit 7b157a0

Please sign in to comment.