Fix disposed DbContext issue (#15090) #15410
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prerequisites
If there's an existing issue for this PR then this fixes #15090
Description
The
InitializeMemberApplicationNotificationHandler
is invoked at start-up - also during install. Problem is... it has an indirect dependency onUmbracoDbContext
, which ultimately causes the linked issue in rare cases (it's a timing thing).This PR ensures that
InitializeMemberApplicationNotificationHandler
resolves theIMemberApplicationManager
at runtime instead of through the DI, which in turn ensures that the handler does not have a DI bound dependency onUmbracoDbContext
.Furthermore we're now throwing an exception in
UmbracoDbContext
if the connection string has not yet been set. This should prevent these kinds of issues from escalating in the future.The exception throwing in
UmbracoDbContext
also means thatUmbracoPooledDbContextFactory
is no longer necessary. This was initially introduced as an attempted workaround to the same root cause.Testing this PR
It should be possible to install V12.3.4 😄
Install should be performed with and without
MemberAuthorization
configured for the Delivery API (see docs):umbracoOpenIddictApplications
table should reflect the configuration after install.