Root cause: App.razor was in CentralUI (Microsoft.NET.Sdk.Razor RCL) but MapRazorComponents<App>().AddInteractiveServerRenderMode() serves _framework/blazor.web.js from the host assembly (Microsoft.NET.Sdk.Web). Per MS docs, the root component must be in the server (host) project. - Move App.razor and Routes.razor from CentralUI to Host/Components/ - Add Host/_Imports.razor for Razor component usings - Make MapCentralUI generic: MapCentralUI<TApp>() accepts root component - Add AdditionalAssemblies to discover CentralUI's pages/layouts - Routes.razor references both Host and CentralUI assemblies - Fix all DI registrations (TemplateEngine services) - SCADALINK_CONFIG env var for role-specific config loading Verified: blazor.web.js HTTP 200 (200KB), login page renders with Blazor interactive server mode, SignalR circuit establishes, LDAP auth works.
26 lines
824 B
C#
26 lines
824 B
C#
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Routing;
|
|
using ScadaLink.CentralUI.Auth;
|
|
using ScadaLink.CentralUI.Components.Layout;
|
|
|
|
namespace ScadaLink.CentralUI;
|
|
|
|
public static class EndpointExtensions
|
|
{
|
|
/// <summary>
|
|
/// Maps the Central UI endpoints. The caller must provide the root App component type
|
|
/// from the Host assembly so that blazor.web.js is served correctly.
|
|
/// </summary>
|
|
public static IEndpointRouteBuilder MapCentralUI<TApp>(this IEndpointRouteBuilder endpoints)
|
|
where TApp : Microsoft.AspNetCore.Components.IComponent
|
|
{
|
|
endpoints.MapAuthEndpoints();
|
|
|
|
endpoints.MapRazorComponents<TApp>()
|
|
.AddInteractiveServerRenderMode()
|
|
.AddAdditionalAssemblies(typeof(MainLayout).Assembly);
|
|
|
|
return endpoints;
|
|
}
|
|
}
|