D2: document no current duplicate / endpoint (no-op)
This commit is contained in:
@@ -232,3 +232,39 @@ backup, start.
|
||||
This plan is intentionally NOT executed. When ready, execute on a branch off `main`
|
||||
(`feat/deferred-followups` or per-item branches) — do not commit to `main` directly. D1/D2 need a
|
||||
Server redeploy to take effect; D4/D5 are host operations; D3 touches nothing permanent.
|
||||
|
||||
---
|
||||
|
||||
## D2 — Resolution (2026-06-14)
|
||||
|
||||
Static source determination on build `5976770` (runtime repro out of scope). What was checked:
|
||||
|
||||
- **Razor `@page "/"` count:** exactly ONE — `Dashboard/Components/Pages/DashboardHome.razor`.
|
||||
All other pages declare distinct routes (`/login`, `/sessions`, `/galaxy`, `/browse`,
|
||||
`/apikeys`, `/workers`, `/events`, `/alarms`, `/settings`, `/sessions/{SessionId}`).
|
||||
- **No root index.html:** `src/ZB.MOM.WW.MxGateway.Server/wwwroot/` contains only `css/` and
|
||||
`lib/` subdirectories; no `index.html` anywhere under `wwwroot/`.
|
||||
- **No `UseDefaultFiles` / no `MapFallback`:** neither appears anywhere in the Server project.
|
||||
- **`MapStaticAssets` mapped once** (`GatewayApplication.cs:190`) and `UseStaticFiles()` once
|
||||
(`:41`); the static-assets manifest serves fingerprinted CSS/JS assets, not a literal `/`.
|
||||
- **No `MapGet("/")`:** the dashboard endpoint builder
|
||||
(`Dashboard/DashboardEndpointRouteBuilderExtensions.cs`) maps only `/auth/login`, `/logout`,
|
||||
`/denied`, `/hubs/{snapshot,alarms,events}`, `/hubs/token`, then `MapRazorComponents<App>()`.
|
||||
None use pattern `/`.
|
||||
- **`MapZbHealth` / `MapZbMetrics`** come from the external `ZB.MOM.WW.Health` shared library
|
||||
(not in this repo) and map health/metrics paths, not `/`.
|
||||
|
||||
**Root cause of the 2026-06-05 log:** `code-reviews/Server/findings.md` (re-review at `42b0037`,
|
||||
2026-05-24) records that commit `de7639a` **removed the legacy `MapGet("/", ...)` redirect that
|
||||
was colliding with the Blazor `@page "/"` (a real 500)**. That legacy registration was the source
|
||||
of the `AmbiguousMatchException`. It is gone on the current build, so the second `/` endpoint no
|
||||
longer exists.
|
||||
|
||||
**Conclusion:** No duplicate `/` endpoint on build `5976770`. The AmbiguousMatchException is not
|
||||
reproducible from source — it was a stale Development-only artifact from before `de7639a` reached
|
||||
the deployed instance. **No source change made** (no-op).
|
||||
|
||||
**Residual:** A 100% confirmation still requires an authenticated runtime `GET /` against a
|
||||
deployed instance (the only path that exercises routing past the unauthenticated 302-to-`/login`).
|
||||
Recommend a spot-check of authenticated `GET /` after the next Server redeploy; if it returns 200
|
||||
(not 500), this item can be fully closed.
|
||||
|
||||
Reference in New Issue
Block a user