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; } }