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);
            }
        }
Exemple #2
0
        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");
        }