From 5d66de9f32ffa17dc138e83e21574810cd86b1a2 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 24 Jun 2026 10:00:43 +0200 Subject: [PATCH] Refactor HttpClient and HttpContextAccessor setup Moved HttpContextAccessor registration into the configuration of the named HttpClient ("EnvelopeGenerator.Server") to support server-side rendering (SSR) scenarios. Updated the HttpClient to dynamically set its BaseAddress based on the current request's scheme and host using HttpContextAccessor. Removed standalone HttpContextAccessor registration and updated related comments. --- .../EnvelopeGenerator.Server/Program.cs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs index 96e7846f..8fe5acf8 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs @@ -53,8 +53,21 @@ try builder.Services.AddControllers(); builder.Services.AddHttpClient(); - // Named HttpClient for internal API calls (same domain, uses relative paths) - builder.Services.AddHttpClient("EnvelopeGenerator.Server"); + // HttpContextAccessor needed for SSR HttpClient configuration + builder.Services.AddHttpContextAccessor(); + + // Named HttpClient for internal API calls + builder.Services.AddHttpClient("EnvelopeGenerator.Server", (sp, client) => + { + var httpContextAccessor = sp.GetRequiredService(); + var request = httpContextAccessor.HttpContext?.Request; + + if (request != null) + { + // Set base address to current host for SSR scenarios + client.BaseAddress = new Uri($"{request.Scheme}://{request.Host}"); + } + }); // CORS Policy var allowedOrigins = config.GetSection("AllowedOrigins").Get() ?? @@ -290,9 +303,6 @@ try .AddEnvelopeGeneratorServices(config); #pragma warning restore CS0618 - // HttpClient for server-side components (e.g., MainLayout with FontLoader) - builder.Services.AddHttpContextAccessor(); - // Business Services (Server specific) builder.Services.AddScoped(); builder.Services.AddScoped();