From 51e7c368355fe7b5dc464a9b61e0effc9280e551 Mon Sep 17 00:00:00 2001 From: claudiamurialdo Date: Wed, 5 Nov 2025 11:11:05 -0300 Subject: [PATCH] Add MimeMappingsOptions configuration and update FormOptions handling --- .../dotnetcore/GxNetCoreStartup/Startup.cs | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs b/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs index 1e35401fb..49831b50d 100644 --- a/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs +++ b/dotnet/src/dotnetcore/GxNetCoreStartup/Startup.cs @@ -36,6 +36,7 @@ using Microsoft.Extensions.Diagnostics.HealthChecks; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using StackExchange.Redis; namespace GeneXus.Application @@ -206,6 +207,8 @@ public void ConfigureServices(IServiceCollection services) .AddCheck("liveness", () => HealthCheckResult.Healthy(), tags: new[] { "live" }) .AddCheck("readiness", () => HealthCheckResult.Healthy(), tags: new[] { "ready" }); + services.Configure(Config.ConfigRoot.GetSection("MimeMappings")); + IMvcBuilder builder = services.AddMvc(option => { option.EnableEndpointRouting = false; @@ -230,7 +233,8 @@ public void ConfigureServices(IServiceCollection services) }); services.AddDistributedMemoryCache(); services.AddLogging(builder => builder.AddConsole()); - services.Configure(options => + services.Configure(Config.ConfigRoot.GetSection("FormOptions")); + services.PostConfigure(options => { if (Config.GetValueOf("MaxFileUploadSize", out string MaxFileUploadSizeStr) && long.TryParse(MaxFileUploadSizeStr, out long MaxFileUploadSize)) { @@ -513,7 +517,10 @@ private void ConfigureSessionService(IServiceCollection services, ISessionServic } } } - public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHostingEnvironment env, ILoggerFactory loggerFactory, IHttpContextAccessor contextAccessor, Microsoft.Extensions.Hosting.IHostApplicationLifetime applicationLifetime) + public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHostingEnvironment env, ILoggerFactory loggerFactory, + IHttpContextAccessor contextAccessor, + Microsoft.Extensions.Hosting.IHostApplicationLifetime applicationLifetime, + IOptions mimeMappingsOptions) { // Registrar para el graceful shutdown applicationLifetime.ApplicationStopping.Register(OnShutdown); @@ -541,6 +548,14 @@ public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHos provider.Mappings[".sfb"] = "model/sfb"; provider.Mappings[".gltf"] = "model/gltf+json"; provider.Mappings[".ini"] = "text/plain"; + + if (mimeMappingsOptions?.Value != null) + { + foreach (var mapping in mimeMappingsOptions.Value) + { + provider.Mappings[mapping.Key] = mapping.Value; + } + } if (GXUtil.CompressResponse()) { app.UseResponseCompression(); @@ -959,5 +974,5 @@ public static IApplicationBuilder UseAsyncSession(this IApplicationBuilder app) return app; } } - + public class MimeMappingsOptions : Dictionary { } }