Requests hang forever in .NET (missing or unsafe timeouts)
Incidents repeat because calls wait too long and cancellation never propagates. The fix is usually a timeout matrix and total-budget discipline across HTTP, DB, and jobs.
Common symptom variants
Primary playbook
When requests hang forever and recycling releases stuck work: why missing timeouts create backlog, how to add budgets safely, and the rollout plan that prevents new incidents.
Recommended resource
A practical worksheet to set request/job budgets, allocate per-dependency timeouts, and define stop rules and logging fields.
Related posts
Requests timing out but CPU normal: thread pool starvation in ASP.NET
When requests time out but CPU is low and restarting fixes it temporarily: how thread pool starvation happens, how to prove queueing, and the smallest fixes that stop repeat incidents.
Retries making outages worse: when resilience policies multiply failures in .NET
Retry storms don't look like a bug—they look like good engineering until retries amplify failures and multiply in-flight requests during backpressure.