Skip to content

Conversation

ilonatommy
Copy link
Member

@ilonatommy ilonatommy commented Jul 1, 2025

Fix SSR with NotFound triggered after async operation started

Description

NotFound page didn't get rendered if NavigationManager.NotFound() got called after an async operation. It's because we are making sure nothing gets rendered after the current render batch. We are stopping the renderer after setting the 404 code. The Router was queueing rendering of 404 page after the "stop" signal.

We used to test async operations with streaming enabled and no-streaming was tested with sync operations only. Test cases with _AfterAsyncOperation_ResponseNotStarted_SSR were added to cover POST and GET scenarios of this kind.

To fix it, we changed the SignalRendererToFinishRendering methods to RequestRendererToFinishRendering. Now, when setting the 404 code we only signal the need to stop the renderer in the future. Then, we stop it for real after the quiescence task is finished.

Because we already observed a similar problem with POST requests, we were working that around by using fetch on the client to show 404 page in POSTs. In this PR we could remove the workaround and follow the same pattern as for GETs. This introduced a change in "NotFoundSetOnFormSubmit" tests. POST does not behave anymore as response started.

Fixes #62469

@ilonatommy ilonatommy self-assigned this Jul 1, 2025
@ilonatommy ilonatommy added the area-blazor Includes: Blazor, Razor Components label Jul 1, 2025
@ilonatommy ilonatommy requested a review from a team as a code owner July 1, 2025 15:26
@dotnet-policy-service dotnet-policy-service bot added the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Jul 9, 2025
@ilonatommy ilonatommy removed the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Jul 10, 2025
@ilonatommy ilonatommy closed this Jul 10, 2025
@ilonatommy ilonatommy reopened this Jul 10, 2025
@dotnet-policy-service dotnet-policy-service bot added this to the 10.0-preview7 milestone Jul 10, 2025
ilonatommy added a commit to ilonatommy/aspnetcore that referenced this pull request Jul 11, 2025
@ilonatommy
Copy link
Member Author

Closing in favor of #62635.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-blazor Includes: Blazor, Razor Components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NotFound page doesn't get rendered if NavigationManager.NotFound() is called from an async method

1 participant