Verification and troubleshooting
Match checks to the change
For application changes, restore/build the root solution and run relevant tests. For documentation-only changes, validate text, source claims, links, TOC, and diff; an application build is unnecessary. There is an xUnit project, CODE.com.Tests; no npm application build pipeline is established for the embedded Vue modules.
dotnet restore CODE.com.sln
dotnet build CODE.com.sln --no-restore
dotnet test CODE.com.sln --no-build
dotnet test CODE.com.Tests/CODE.com.Tests.csproj --filter FullyQualifiedName~MagazineMenuTests
| Change | Focused verification |
|---|---|
| Routes/menus | Restart each affected mode; test destinations, aliases, generated URLs, selected area, desktop/mobile expansion, compact footer, and directory |
| Shared layout/styles | Desktop and narrow layouts, relevant sites, both style generations, long text, keyboard access, missing assets, and overflow |
| Reader | Magazine + 2027 selection; other combinations retain their view; anchors, TOC, settings persistence, sharing, code, images, and no-author/date cases |
| Account/Vue/API | Signed-out and signed-in behavior, ownership, server validation, loading/saving/errors, network payloads, console, token refresh, and reload |
| Images/downloads | Redirect and byte responses, MIME agreement, TIFF recovery, alpha/JPEG behavior, portraits, cache hits, and service side effects |
| Sharing/SEO | Server-rendered head, canonical and absolute image URLs, anonymous image access, sample sitemap destinations |
| Configuration/deployment | Effective modes, restart behavior, secrets/feed availability, startup remote calls, and target-runtime image behavior |
Existing regression coverage
MagazineMenuTests covers menu visibility/order, dynamic service links, selected areas, other-site expansion, featured footer grouping, and rendered footer behavior. ArticlePresentationTests covers accent validation, reading time, category selection, and biography formatting. BlogPresentationTests covers visibility flags and preserving body anchors. ImageHelperTests covers encoding/resizing/TIFF behavior; ArticleImageTests covers delivery, recovery, logging/notification behavior, portraits, and image callers.
These tests do not establish end-to-end account, payment, live backend, or browser correctness. Follow existing service-test setup when adding regression coverage and isolate static configuration/caches. Add tests for meaningful logic or regressions; do not mirror trivial markup changes with brittle assertions.
Diagnosing common failures
| Symptom | First checks |
|---|---|
| Restore fails | .NET 10 SDK, NuGet feed access/authentication, package availability; do not paste credentials into logs |
| Startup stops before listening | Mode parsing and consulting slug fetch during Standard/Group route registration |
| Override appears ignored | Actual ApplicationSettings base key, root-level override spelling, selected process, and restart |
A URL redirects to /Error |
Active route set, route order/parameters, attribute routes, and fallback; inspect the response chain |
| Menu or service link is stale | Process menu cache versus dynamic service data versus startup-registered slug routes; these have different refresh points |
| Wrong visual generation | Effective StyleMode, selected view condition, shared CSS overrides, asset versions, and browser cache |
| Profile component stays loading | Module path, Vue runtime load, console, fetch response shape, auth state, and POST rejection handling |
| Form fails after AJAX login | Refresh identity-bound antiforgery token before submission |
| Image is blank or broken | Redirect target, response MIME and bytes, missing attachment, fallback path, native runtime, and cache owner |
| Social image missing | Outer ISharable model and populated sharing image; ViewBag image fallback is inactive |
| Sitemap is incomplete | Per-group logged exceptions, backend responses, and the intentionally limited enumeration scope |
| Expected exception logging is missing | Feature catches and UTM middleware's downstream exception swallowing |
Logging and operational boundaries
Startup optionally registers CODE Framework database logging from LogserverConnectionstring and email logging when distribution/server credentials are configured. EnvironmentName labels those logs; it is separate from ASP.NET's environment selection. Review LoggingMediator calls in the affected feature and distinguish business failure responses from thrown exceptions.
Do not diagnose expected failures by changing every developer's debugger exception settings. Handle expected outcomes in application code and preserve visibility into unexpected errors. Keep passwords, payment values, tokens, and person data out of screenshots and diagnostics; masking helpers are not a guarantee that every logging path is safe.
There is no deployment runbook established by this guide. Confirm target settings, feed/runtime availability, backend environment, and rollback practice with the deployment owner. The code uses in-process caches/session and external services, so restarting or scaling can affect state and dependency traffic. Do not infer a shared session store or a universal multi-instance cache purge.