Beispiel #1
0
        public void ProcessRequest(HttpContext context)
        {
            string name     = context.Request.QueryString["name"];
            string location = context.Request.QueryString["location"];
            string version  = context.Request.QueryString["version"];

            if (name == null)
            {
                name = _UrlInfo.Action;
            }
            try
            {
                if (!_StaticResourceRegistryEx.Exists(name, location, version))
                {
                    context.Response.StatusCode = 0x194;
                }
                else
                {
                    string mimeType;
                    Stream resourceStream = null;

                    try
                    {
                        resourceStream = _StaticResourceRegistryEx.GetResourceStream(name, location, version, out mimeType);

                        if (resourceStream != null)
                        {
                            byte[] bytes = new byte[resourceStream.Length];

                            resourceStream.Read(bytes, 0, Convert.ToInt32(resourceStream.Length));

                            context.Response.Clear();
                            context.Response.AppendHeader("content-disposition", "filename=" + name);
                            context.Response.AppendHeader("content-Length", bytes.Length.ToString());
                            context.Response.ContentType = mimeType;

                            context.Response.OutputStream.Write(bytes, 0, bytes.Length);
                        }
                        else
                        {
                            string resourceContent = _StaticResourceRegistryEx.GetResource(name, location, version, out mimeType);

                            context.Response.ContentType = mimeType;
                            context.Response.Write(resourceContent);
                        }
                    }
                    finally
                    {
                        if (resourceStream != null)
                        {
                            resourceStream.Close();
                        }
                    }
                }
            }
            catch (Exception)
            {
                context.Response.StatusCode = 500;
                throw;
            }
        }