-
Notifications
You must be signed in to change notification settings - Fork 10.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Blazor] Supplying a null
parameter value to an interactive root component causes a NullReferenceException
on enhanced navigation
#52434
Comments
@MackinnonBuck good catch. Do you think this has been the case since the beginning or is this a new .NET 8.0 behavior. |
@javiercn |
@MackinnonBuck @mkArtakMSFT parking this in 8.0.x as I think it is patchable, feel free to move it otherwise |
…components via enhanced page update (#53317) (#53342) # Allow `null` parameter values to be supplied to interactive components via enhanced page update Backport of #53317 Fixes an issue where a `NullRefrenceException` would be thrown if an enhanced page update supplied a `null` parameter to an interactive root component. ## Description In .NET 8, SSR'd components can supply updated parameters to existing interactive root components. If one of those updated parameters is `null`, an exception currently gets thrown from within the framework. This causes the circuit to crash when using Server interactivity, and it would causes an error to be logged in the browser console when using WebAssembly interactivity. This PR fixes the problem by treating `null` as a valid value for a serialized parameter that gets supplied to an interactive root component. Fixes #52434 ## Customer Impact Without this fix, customers may encounter the unfriendly exception and have a hard time figuring out the underlying cause. We have not yet seen customer reports of the issue, but it's possible that customers have this bug in their apps without knowing it, especially since it only occurs when supplying updated parameters to existing components (not when supplying the initial set of parameters). One workaround would be to use a different value than `null` to specify an empty parameter value, but this may not be possible in cases where the parameter gets supplied by the framework (e.g., via route value), or if the interactive root component's implementation is not under the developer's control. ## Regression? - [ ] Yes - [X] No Only applicable to new scenarios in .NET 8. ## Risk - [ ] High - [ ] Medium - [X] Low The fix is straightforward and well-tested. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A
Summary
If a
null
value is supplied as a parameter to a render mode boundary component during static SSR, and the SSR'd component is matched up with an existing interactive root component, aNullReferenceException
gets thrown by the framework.Steps to reproduce
MyComponent.razor
):Home.razor
and supply the valuenull
for theValue
parameter:Relevant output
Stack trace:
Proposed fix
Update
WebRootComponentParameters
to account for the possibility that the parameter values arenull
rather than being validJsonElement
s.The text was updated successfully, but these errors were encountered: