From 8257ed573d9c38d60c520f4ead8557ade167d320 Mon Sep 17 00:00:00 2001 From: OlgunR Date: Mon, 23 Mar 2026 17:00:39 +0100 Subject: [PATCH] Register DI services for SSR and update API base URL Added server-side DI registrations for authentication and app-specific services to support Blazor InteractiveAuto prerendering. Registered a scoped HttpClient with base URI for correct API routing. Switched ApiBaseUrl in appsettings.json to https://localhost:8088. Added necessary using statements for new services and providers. --- .../EnvelopeGenerator.ReceiverUI/Program.cs | 32 ++++++++++++++++++- .../appsettings.json | 2 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/Program.cs b/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/Program.cs index 85c40e23..be078b8c 100644 --- a/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/Program.cs +++ b/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/Program.cs @@ -1,4 +1,8 @@ -using EnvelopeGenerator.ReceiverUI.Components; +using EnvelopeGenerator.ReceiverUI.Client.Auth; +using EnvelopeGenerator.ReceiverUI.Client.Services; +using EnvelopeGenerator.ReceiverUI.Client.State; +using EnvelopeGenerator.ReceiverUI.Components; +using Microsoft.AspNetCore.Components.Authorization; var builder = WebApplication.CreateBuilder(args); @@ -14,6 +18,32 @@ var apiBaseUrl = builder.Configuration["ApiBaseUrl"] builder.Services.AddHttpForwarder(); +// ── Services: Müssen AUCH auf dem Server registriert sein ── +// WARUM? Bei @rendermode InteractiveAuto rendert Blazor die Seite zuerst +// auf dem Server (SSR/Prerendering). Dabei resolved es @inject-Properties. +// Wenn ein Service nur im Client-Projekt (WASM) registriert ist, aber nicht +// hier, gibt es eine InvalidOperationException beim Prerendering. +// +// Der HttpClient auf dem Server zeigt auf sich selbst (localhost), +// weil die /api/* Requests über MapForwarder an die echte API gehen. +builder.Services.AddScoped(sp => +{ + var navigationManager = sp.GetService(); + var baseUri = navigationManager?.BaseUri ?? $"https://localhost:{builder.Configuration["ASPNETCORE_HTTPS_PORT"] ?? "7206"}/"; + return new HttpClient { BaseAddress = new Uri(baseUri) }; +}); + +builder.Services.AddAuthorizationCore(); +builder.Services.AddScoped(); +builder.Services.AddScoped(sp => + sp.GetRequiredService()); + +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); + var app = builder.Build(); if (app.Environment.IsDevelopment()) diff --git a/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/appsettings.json b/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/appsettings.json index bbee3a49..b4f03b2f 100644 --- a/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/appsettings.json +++ b/EnvelopeGenerator.ReceiverUI/EnvelopeGenerator.ReceiverUI/appsettings.json @@ -1,5 +1,5 @@ { - "ApiBaseUrl": "https://localhost:5001", + "ApiBaseUrl": "https://localhost:8088", "Logging": { "LogLevel": { "Default": "Information",