public async Task Invoke(HttpContext context, ILogger logger, IApiContextAccessor contextAccessor /* other scoped dependencies */)
        {
            context.Request.Headers.TryGetValue("UserId", out var uid);
            contextAccessor.CurrentApiContext = new ApiContext(uid);

            await next(context);
        }
        public static ApiContext GetOrCreate(this IApiContextAccessor apiContextAccessor, Func <ApiContext> fac = null)
        {
            if (apiContextAccessor.CurrentApiContext == null)
            {
                apiContextAccessor.CurrentApiContext = fac == null ? new ApiContext() : fac();
            }

            return(apiContextAccessor.CurrentApiContext);
        }