public WebRequestOutput HandleRequest(WebRequestInput requestInput)
        {
            WebRequestOutput output = new WebRequestOutput();
            Assembly assembly = Assembly.GetAssembly(this.GetType());
            var resourceName = $"{assembly.GetName().Name}.Content{requestInput.RequestFileName.Replace('/', '.').Replace("..", ".")}";
            var stream = assembly.GetManifestResourceStream(resourceName);
            if (stream != null)
            {
                using (stream)
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        string result = reader.ReadToEnd();
                        output.ContentType = "application/octet-stream";
                        output.Response = result;
                    }
                }
            }
            else
            {
                output.Error = new ResourceNotFoundError();
            }

            return output;
        }
        public void ProcessRequest(HttpContext context)
        {
            if (context == null)
                throw new ArgumentNullException(nameof(context));

            var extension = context.Request.CurrentExecutionFilePathExtension;
            var filename = context.Request.AppRelativeCurrentExecutionFilePath.Remove(0,1);

            WebRequestInput webRequestInput = new WebRequestInput()
            {
                ApplicationPath = context.Request.ApplicationPath,
                RequestExtension = extension.Replace(".", string.Empty),
                RequestFileName = filename,
                Url = context.Request.Url
            };

            IWebRequestFactory webRequestFactory = WebSolution.WebPackage.WebRequestFactory;

            try
            {
                var fileHandler = webRequestFactory.GetFileHandlerForRequest(filename);


                var result = fileHandler.HandleRequest(webRequestInput);

                if (!result.HasError)
                {
                    context.Response.ContentType = result.ContentType;
                    context.Response.Output.Write(result.Response);
                } 
                else
                {
                    if (result.Error is ResourceNotFoundError)
                    {
                        context.Response.StatusCode = 404;
                    }                   
                }
            }
            
            catch(NotSupportedException nsEx)
            {
                context.Response.StatusCode = 501;
            }      

         }