diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor index 1c211e79..02a5588f 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Components/Pages/EnvelopeSenderEditorPage.razor @@ -348,8 +348,17 @@ protected override void OnInitialized() { - // If no session id exists yet, generate one and redirect so it sticks in the URL. - // This is the ONLY navigation that uses forceLoad; afterwards the page lives forever. + // Intentionally empty. + // 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)) { var sid = Guid.NewGuid().ToString("N");