public virtual async Task ProcessRequestAsync(HttpContext context)
        {
            //context.Response.TrySkipIisCustomErrors = TrySkipIisCustomErrors;

            try
            {
                ParseRequestParameters(context);

                if (CheckAuthorizationRules(context) == false)
                {
                    return;
                }

                if (CheckRequestResourceExists(context) == false)
                {
                    return;
                }

                InternalRequestedFileInfo = GetRequestedFileInfo(context);

                InternalRequestedFileEntityTag = GetRequestedFileEntityTag(context);

                await CreateResponseContentIfRequiredAsync(context);

                InternalRequestedFileMimeType = GetRequestedFileMimeType(context);
                ParseRequestHeaderRanges(context);

                // Perform each check; exit if any check returns false
                if (ProcessRequestCheckSteps.Any(check => check(context) == false) || (await CheckIfRangeHeader(context) == false))
                {
                    return;
                }

                if (!EnableRangeRequests || !IsRangeRequest)
                {
                    await ReturnEntireEntity(context);
                }
                else
                {
                    await ReturnPartialEntity(context);
                }
            }
            catch (OperationCanceledException)
            {
                //do nothing
            }
            catch
            {
                //HandleException(context, ex);
            }

            //EndRequest(context);
        }
        public void ProcessRequest(HttpContext context)
        {
            InternalRequestedFileInfo      = GetRequestedFileInfo(context);
            InternalRequestedFileEntityTag = GetRequestedFileEntityTag(context);
            InternalRequestedFileMimeType  = GetRequestedFileMimeType(context);
            ParseRequestHeaderRanges(context);

            // Perform each check; exit if any check returns false
            if (ProcessRequestCheckSteps.Any(check => check(context) == false))
            {
                return;
            }

            if (!EnableRangeRequests || !IsRangeRequest)
            {
                ReturnEntireEntity(context);
            }
            else
            {
                ReturnPartialEntity(context);
            }
        }