Answer
Controllers use scoped services per request, Razor Views should avoid heavy scoped logic, and Middleware must avoid scoped services because middleware is created once and would turn scoped dependencies into singletons.
This scope behavior prevents state leakage, concurrency bugs, and lifecycle misalignment across pipeline components.