Skip to content

Runbook

Common tasks

Task Command
Restore frontend npm install (solution root)
Run shell dotnet run --project src/Shell.BlazorServer
Build all dotnet build
Test dotnet test
Rebuild CSS npm run build

Troubleshooting

Symptom Likely cause Action
MFE route 404 while Shell's own pages work The MFE's assembly is missing from ShellMfeRegistry.Assemblies (feeding AddAdditionalAssemblies(...) in Program.cs), or a client-rendered <Router AdditionalAssemblies> wasn't updated to match Add the MFE's assembly to Composition/ShellMfeRegistry.cs and confirm both endpoint routing and any Router component reference the same assembly list
AuthorizationPolicy 'X' was not found at runtime A page/component references a policy that no Add{X}Mfe extension actually registered Each MFE registers its own authorization policies inside its own Add{X}Mfe extension — confirm the policy is registered there, not assumed to come from the Shell
Wrong theme/adapter uiKitAdapter conditional not active, or the non-chosen adapter project isn't even present (only one ships per generation) Regenerate with the desired uiKitAdapter, or manually add the adapter project + package reference and its registration call
Missing _framework/blazor.web.js in a published build RequiresAspNetWebAssets wasn't forced true on the host project (it has zero .razor files, so the SDK never auto-sets it) Confirm <RequiresAspNetWebAssets>true</RequiresAspNetWebAssets> is present in Shell.BlazorServer.csproj
Theme reverts to default after in-app navigation Enhanced navigation patches the DOM without firing DOMContentLoaded again Confirm Shell.BlazorServer.Core/wwwroot/js/app.js re-applies theme state via Blazor.addEventListener('enhancedload', ...)
Architecture test failure New project violates layering Fix dependency direction per NetArchTest assertions
Looking for BFF/Shared.Contracts Not shipped in current source, and not part of the in-process composition model Don't expect them; MFEs are referenced RCLs in the same process, not separate services
BffApiPort/SelfServiceMfePort/AdminMfePort don't seem to do anything They're vestigial — no BFF or separate MFE host exists for them to configure Use ShellPort for the Shell's own port; ignore the other three

See also