public void ProcessRequest(HttpContext context) { var routeDataValues = _routeData.Values; var client = routeDataValues["client"].ToString(); var assemblyName = UrlToAssemblyMapping.GetAssemblyByUrl(client).GetName().Name; var fileName = routeDataValues["file"].ToString(); var fileExtension = routeDataValues["extension"].ToString(); var prefix = _routeData.DataTokens["name"] + "."; var resourcePath = string.Format("{0}.{1}{2}.{3}", assemblyName, prefix, fileName, fileExtension); var pathInfo = new EmbeddedResourcePathInfo(resourcePath); AssemblyNameResolution assemblyNameResolution; if (_embeddedResourceNameResolver.TryResolve(pathInfo, out assemblyNameResolution)) { var stream = _streamFetcher.Fetch(assemblyNameResolution.Assembly, assemblyNameResolution.Name); context.Response.Clear(); context.Response.ContentType = MimeTypeMap.GetMimeType(fileExtension); stream.CopyTo(context.Response.OutputStream); } else { throw new Exception("Unable to find resource: " + resourcePath); } }
public override Stream Open() { AssemblyNameResolution assemblyNameResolution; if (_embeddedResourceNameResolver.TryResolve(_pathInfo, out assemblyNameResolution)) { var result = _streamFetcher.Fetch(assemblyNameResolution.Assembly, assemblyNameResolution.Name); return(result); } throw new Exception("Unable to open virtual file"); }