ReuseScope.Request

A scoped dependency means relying on Request Scope which relies on the host-specific RequestContext.Instance behind the scenes and can’t be injected in singletons.

RequestContext.Instance needs to use AsyncLocal<T> in .NET Core (which has a perf impact), HttpContext.Current in ASP.NET which is only available within the context of a Request and is subjectable to runtime issues by trying to access it on background threads, WCF’s Remoting CallContext in HttpListener/MQ Hosts/.NET Framework Unit tests, which didn’t work properly in Mono for years and had to use [ThreadStatic] which doesn’t support async requests.

This thread is about avoiding Request Scope, the only way to do that is by passing per-request data as an argument otherwise you need to rely on the hosting environment to maintain logical thread storage which comes at a cost.