Move session ID logic to OnAfterRenderAsync

The session ID generation and redirection logic was moved from
OnInitialized to OnAfterRenderAsync to address issues with
NavigationException during SSR prerendering. OnInitialized is
now intentionally left empty, and the new OnAfterRenderAsync
method ensures the session ID is appended to the URL only after
the first interactive render, when SignalR is connected and
NavigateTo is safe.
This commit is contained in:
2026-07-01 23:10:39 +02:00
parent 74da6e37b0
commit 9ecfe08e2e

View File

@@ -348,8 +348,17 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
// If no session id exists yet, generate one and redirect so it sticks in the URL. // Intentionally empty.
// This is the ONLY navigation that uses forceLoad; afterwards the page lives forever. // esid redirect is done in OnAfterRenderAsync to avoid NavigationException
// during SSR prerendering, where NavigateTo throws by design.
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (!firstRender) return;
// Generate a session id on first interactive render and push it into the URL.
// At this point SignalR is connected and NavigateTo is safe.
if (string.IsNullOrWhiteSpace(Esid)) if (string.IsNullOrWhiteSpace(Esid))
{ {
var sid = Guid.NewGuid().ToString("N"); var sid = Guid.NewGuid().ToString("N");