Esempio n. 1
0
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            if (!request.IsAjaxRequest() || request.HttpMethod == "POST")
            {
                string acceptEncoding = request.Headers["Accept-Encoding"];
                if (string.IsNullOrEmpty(acceptEncoding))
                {
                    return;
                }
                acceptEncoding = acceptEncoding.ToUpperInvariant();
                HttpResponseBase response = filterContext.HttpContext.Response;
                if (acceptEncoding.Contains("GZIP"))
                {
                    response.AppendHeader("Content-encoding", "gizp");
                    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                }
                else if (acceptEncoding.Contains("DEFLATE"))
                {
                    response.AppendHeader("Content-encoding", "deflate");
                    response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                }
            }
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            HttpRequestBase request = filterContext.HttpContext.Request;

            if (request == null || request.IsAjaxRequest())
            {
                return;
            }
            HttpResponseBase response       = filterContext.HttpContext.Response;
            string           acceptEncoding = request.Headers["Accept-Encoding"];

            if (String.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }
            if (acceptEncoding.ToLower().Contains("gzip"))
            {
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                response.AppendHeader("Content-Encoding", "gzip");
            }
            else if (acceptEncoding.ToLower().Contains("deflate"))
            {
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                response.AppendHeader("Content-Encoding", "deflate");
            }
        }
Esempio n. 3
0
        public static void UpdateHeader(HttpResponseBase response, ResponseFrameOptionsType type, string domain)
        {
            switch (type)
            {
            case ResponseFrameOptionsType.DENY:
            {
                response.AppendHeader(FrameOptionsConstants.XFrameOptions, FrameOptionsConstants.DenyFrames);
                break;
            }

            case ResponseFrameOptionsType.SAMEORIGIN:
            {
                response.AppendHeader(FrameOptionsConstants.XFrameOptions, FrameOptionsConstants.SameOriginFrames);
                break;
            }

            case ResponseFrameOptionsType.ALLOWFROM when !string.IsNullOrWhiteSpace(domain):
            {
                response.AppendHeader(FrameOptionsConstants.XFrameOptions, $"{FrameOptionsConstants.AllowFrom} {domain}");
                break;
            }

            default:
            {
                response.AppendHeader(FrameOptionsConstants.XFrameOptions, FrameOptionsConstants.DenyFrames);
                break;
            }
            }
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (filterContext is null)
            {
                throw new ArgumentNullException(nameof(filterContext));
            }
            HttpRequestBase request = filterContext.HttpContext.Request;

            string acceptEncoding = request.Headers[AspNetConstants.AcceptEncoding];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }

            acceptEncoding = acceptEncoding.ToUpperInvariant();

            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader(AspNetConstants.ContentEncoding, "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader(AspNetConstants.ContentEncoding, "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
Esempio n. 5
0
 public override void OnResultExecuted(ResultExecutedContext filterContext)
 {
     if (filterContext.Exception == null && this.isEnableCompression)
     {
         HttpResponseBase response = filterContext.HttpContext.Response;
         if (!(response.Filter is GZipStream) && !(response.Filter is DeflateStream))
         {
             string text = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
             if (!string.IsNullOrEmpty(text))
             {
                 text = text.ToLower();
                 if (text.Contains("gzip") && response.Filter != null)
                 {
                     response.AppendHeader("Content-Encoding", "gzip");
                     response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                 }
                 else if (text.Contains("deflate") && response.Filter != null)
                 {
                     response.AppendHeader("Content-Encoding", "deflate");
                     response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                 }
             }
         }
     }
 }
Esempio n. 6
0
        Stream EncodeStreamAndAppendResponseHeaders(Stream stream, string acceptEncoding)
        {
            if (acceptEncoding == null)
            {
                return(stream);
            }

            var preferredEncoding = ParsePreferredEncoding(acceptEncoding);

            if (preferredEncoding == null)
            {
                return(stream);
            }

            response.AppendHeader("Content-Encoding", preferredEncoding);
            response.AppendHeader("Vary", "Accept-Encoding");
            if (preferredEncoding == "deflate")
            {
                return(new DeflateStream(stream, CompressionMode.Compress, true));
            }
            if (preferredEncoding == "gzip")
            {
                return(new GZipStream(stream, CompressionMode.Compress, true));
            }

            // This line should never be reached because we've filtered out unsupported encoding types.
            // But the compiler doesn't know this. :)
            throw new Exception("Unknown content encoding type \"" + preferredEncoding + "\".");
        }
Esempio n. 7
0
        /// <summary>
        /// override OnActionExecuting
        /// </summary>
        /// <param name="filterContext">ActionExecutingContext</param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (Metadata.Get("Metadata/Settings.EnableGzipCompress").ParseToBool(false))
            {
                HttpRequestBase request = filterContext.HttpContext.Request;

                string acceptEncoding = request.Headers["Accept-Encoding"];

                if (string.IsNullOrEmpty(acceptEncoding))
                {
                    return;
                }

                acceptEncoding = acceptEncoding.ToUpperInvariant();

                HttpResponseBase response = filterContext.HttpContext.Response;

                if (acceptEncoding.Contains("GZIP"))
                {
                    response.AppendHeader("Content-encoding", "gzip");
                    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                }
                else if (acceptEncoding.Contains("DEFLATE"))
                {
                    response.AppendHeader("Content-encoding", "deflate");
                    response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                }
            }
        }
Esempio n. 8
0
        public static void CompressStream(HttpRequestBase request, HttpResponseBase response)
        {
            string acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }
            string encoding = response.Headers["Content-encoding"];

            if (!string.IsNullOrEmpty(encoding))
            {
                return;
            }

            acceptEncoding = acceptEncoding.ToLowerInvariant();

            if (acceptEncoding.Contains("gzip"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("deflate"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
Esempio n. 9
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            bool allowCompression = false;

            bool.TryParse(ConfigurationManager.AppSettings["Compression"], out allowCompression);

            if (allowCompression)
            {
                HttpRequestBase request = filterContext.HttpContext.Request;

                string acceptEncoding = request.Headers["Accept-Encoding"];

                if (string.IsNullOrEmpty(acceptEncoding))
                {
                    return;
                }

                acceptEncoding = acceptEncoding.ToUpperInvariant();

                HttpResponseBase response = filterContext.HttpContext.Response;

                if (acceptEncoding.Contains("GZIP"))
                {
                    response.AppendHeader("Content-encoding", "gzip");
                    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                }
                else if (acceptEncoding.Contains("DEFLATE"))
                {
                    response.AppendHeader("Content-encoding", "deflate");
                    response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        /// The on begin request.
        /// </summary>
        /// <param name="context">
        /// The context.
        /// </param>
        public override void OnBeginRequest(HttpContextBase context)
        {
            if (context.Request.RawUrl.Contains(".aspx"))
            {
                HttpRequestBase  request        = context.Request;
                string           acceptEncoding = request.Headers["Accept-Encoding"];
                HttpResponseBase response       = context.Response;
                if (!string.IsNullOrEmpty(acceptEncoding))
                {
                    acceptEncoding = acceptEncoding.ToUpperInvariant();
                    if (acceptEncoding.Contains("GZIP"))
                    {
                        response.Filter = new CompressWhitespaceFilter(context.Response.Filter, CompressOptions.GZip);
                        response.AppendHeader("Content-encoding", "gzip");
                    }
                    else if (acceptEncoding.Contains("DEFLATE"))
                    {
                        response.Filter = new CompressWhitespaceFilter(context.Response.Filter, CompressOptions.Deflate);
                        response.AppendHeader("Content-encoding", "deflate");
                    }
                }

                response.Cache.VaryByHeaders["Accept-Encoding"] = true;
            }
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(encodingsAccepted))
            {
                return;
            }
            //
            HttpResponseBase response = filterContext.HttpContext.Response;

            //
            if (encodingsAccepted.Contains("deflate"))
            {
                response.Headers.Remove("Content-Encoding");
                response.AppendHeader("Content-Encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionLevel.Optimal);
            }
            else if (encodingsAccepted.Contains("gzip"))
            {
                response.Headers.Remove("Content-Encoding");
                response.AppendHeader("Content-Encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionLevel.Optimal);
            }
            //
            response.AppendHeader("Vary", "Content-Encoding");
        }
        public static void AddCompression(HttpContextBase httpContext)
        {
            bool?isCompressionAdded = (bool?)httpContext.Items["compressionAdded"];

            if (isCompressionAdded.GetValueOrDefault(false))
            {
                return;
            }

            HttpRequestBase request        = httpContext.Request;
            string          acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }

            acceptEncoding = acceptEncoding.ToUpperInvariant();
            HttpResponseBase response = httpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
            httpContext.Items["compressionAdded"] = true;
        }
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            //如果出现错误,则不进行压缩,否则页面会出现乱码,而不是报错的黄页
            if (filterContext.Exception != null)
            {
                return;
            }

            HttpResponseBase Response = filterContext.HttpContext.Response as HttpResponseBase;

            //判断IIS或者其他承载设备是是否启用了GZip或DeflateStream
            if (Response.Filter is GZipStream || Response.Filter is DeflateStream)
            {
                return;
            }

            //开始进入压缩环节
            string AcceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];

            if (!string.IsNullOrEmpty(AcceptEncoding))
            {
                if (AcceptEncoding.Contains("gzip"))
                {
                    Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress);
                    Response.Headers.Remove("Content-Encoding");
                    Response.AppendHeader("Content-Encoding", "gzip");
                }
                else //if (AcceptEncoding.Contains("deflate"))
                {
                    Response.Filter = new DeflateStream(Response.Filter, CompressionMode.Compress);
                    Response.Headers.Remove("Content-Encoding");
                    Response.AppendHeader("Content-Encoding", "deflate");
                }
            }
        }
Esempio n. 14
0
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase request = filterContext.HttpContext.Request;
        //получаем заголовок Accept-Encoding, который указывает
        //какие алгоритмы сжатия он поддерживает
        string acceptEncoding = request.Headers["Accept-Encoding"];

        if (string.IsNullOrEmpty(acceptEncoding))
        {
            return;
        }
        acceptEncoding = acceptEncoding.ToUpperInvariant();
        HttpResponseBase response = filterContext.HttpContext.Response;

        if (acceptEncoding.Contains("GZIP"))
        {
            response.AppendHeader("Content-encoding", "gzip");
            response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
        }
        else if (acceptEncoding.Contains("DEFLATE"))
        {
            response.AppendHeader("Content-encoding", "deflate");
            response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
        }
    }
Esempio n. 15
0
        /// <summary>
        /// 将文件写入响应流,根据请求标头和文件属性添加正确的标头
        /// </summary>
        /// <param name="response"></param>
        protected virtual void TransmitFile(HttpResponseBase response)
        {
            var contentLength = ContentLength();

            response.StatusCode = SendRange() ? (int)HttpStatusCode.PartialContent : (int)HttpStatusCode.OK;

            response.AppendHeader(HttpHeaders.ContentLength, contentLength.ToString(CultureInfo.InvariantCulture));
            response.AppendHeader(HttpHeaders.AcceptRanges, "bytes");
            response.AppendHeader(HttpHeaders.ContentRange, $"bytes {_byteRange.Start}-{_byteRange.End}/{_file.Length}");
            response.AppendHeader(HttpHeaders.AccessControlExposeHeaders, HttpHeaders.ContentDisposition);

            if (!string.IsNullOrWhiteSpace(_downloadFileName))
            {
                response.AddHeader("Content-Disposition", $"attachment;filename=\"{_downloadFileName}\"");
            }

            try
            {
                response.TransmitFile(FileName, _byteRange.Start, contentLength);
            }
            catch (Exception ex)
            {
                LogException?.Invoke(ex);
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 检查请求中的标头,为响应添加适当的标头
        /// </summary>
        /// <param name="response"></param>
        protected override void WriteFile(HttpResponseBase response)
        {
            response.AppendHeader(HttpHeaders.Etag, _etag);
            response.AppendHeader(HttpHeaders.LastModified, _lastModified);
            response.AppendHeader(HttpHeaders.Expires, DateTime.Now.ToString("R"));
            response.AppendHeader(HttpHeaders.AccessControlExposeHeaders, HttpHeaders.ContentDisposition);

            if (IsNotModified())
            {
                response.StatusCode = (int)HttpStatusCode.NotModified;
            }
            else if (IsPreconditionFailed())
            {
                response.StatusCode = (int)HttpStatusCode.PreconditionFailed;
            }
            else if (IsRangeNotSatisfiable())
            {
                response.AppendHeader(HttpHeaders.ContentRange, "bytes */" + _file.Length);
                response.StatusCode = (int)HttpStatusCode.RequestedRangeNotSatisfiable;
            }
            else
            {
                TransmitFile(response);
            }
        }
Esempio n. 17
0
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // If the browser session or authentication session has expired...
            if (HttpContext.Current.Session[SessionFilter.EncryptedLoggedinEmployeeId] == null || !HttpContext.Current.User.Identity.IsAuthenticated)
            {
                //ValidateSession(SessionFilter.OnActionExecuting);
                ValidateSession();
            }
            HttpRequestBase request = filterContext.HttpContext.Request;

            string acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }

            acceptEncoding = acceptEncoding.ToUpperInvariant();

            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
Esempio n. 18
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            response.ClearHeaders();
            response.AppendHeader("Cache-Control", "private, no-cache, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0");
            response.AppendHeader("Pragma", "no-cache");
            response.AppendHeader("Expires", "-1");
            HttpCachePolicyBase cache = response.Cache;

            cache.SetCacheability(HttpCacheability.NoCache);

            if (string.IsNullOrEmpty(this.Filename))
            {
                this.Filename = "output.xls";
            }
            response.ContentType = "application/vnd.ms-excel";
            response.AddHeader("Content-Disposition", "attachment;filename=" + this.Filename);

            if (this.ContentEncoding == null)
            {
                this.ContentEncoding = System.Text.Encoding.GetEncoding("Shift_JIS");
                //this.ContentEncoding = System.Text.Encoding.UTF8;
            }
            response.ContentEncoding = this.ContentEncoding;

            response.BinaryWrite(Data.GetBuffer());
        }
Esempio n. 19
0
        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            if (filterContext.Exception != null || !isEnableCompression)
            {
                return;
            }
            HttpResponseBase response = filterContext.HttpContext.Response;

            if (response.Filter is GZipStream || response.Filter is DeflateStream)
            {
                return;
            }
            string item = filterContext.HttpContext.Request.Headers["Accept-Encoding"];

            if (!string.IsNullOrEmpty(item))
            {
                item = item.ToLower();
                if (item.Contains("gzip") && response.Filter != null)
                {
                    response.AppendHeader("Content-Encoding", "gzip");
                    response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                    return;
                }
                if (item.Contains("deflate") && response.Filter != null)
                {
                    response.AppendHeader("Content-Encoding", "deflate");
                    response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                }
            }
        }
Esempio n. 20
0
        public static void EncodeStreamAndAppendResponseHeaders(HttpResponseBase response, string acceptEncoding)
        {
            if (acceptEncoding == null)
            {
                return;
            }

            var preferredEncoding = ParsePreferredEncoding(acceptEncoding);

            if (preferredEncoding == null)
            {
                return;
            }

            response.AppendHeader("Content-Encoding", preferredEncoding);
            response.AppendHeader("Vary", "Accept-Encoding");
            if (preferredEncoding == "deflate")
            {
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress, true);
            }
            if (preferredEncoding == "gzip")
            {
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress, true);
            }
        }
        public override void ExecuteResult(ControllerContext context)
        {
            HttpResponseBase response = context.HttpContext.Response;
            HttpRequestBase  request  = context.HttpContext.Request;

            response.AddHeader("Content-Disposition", new ContentDisposition {
                FileName = FileName
            }.ToString());
            response.AppendHeader("Vary", "Accept-Encoding");
            response.Cache.SetCacheability(HttpCacheability.Public);
            response.Cache.SetMaxAge(CacheDuration);
            response.Cache.SetSlidingExpiration(true);

            if (!VersionChanged(request, ScriptHtmlHelper.Manager.LastModified))
            {
                response.StatusCode      = 304;
                response.SuppressContent = true;
                return;
            }

            bool canGZip = CanGZip(context.HttpContext.Request);

            byte[] bytes = canGZip ? (Compressed ?? (Compressed = Compress())) : Uncompressed;

            response.AppendHeader("Content-Length", bytes.Length.ToString());
            if (canGZip)
            {
                response.AppendHeader("Content-Encoding", "gzip");
            }

            response.Cache.SetLastModified(ScriptHtmlHelper.Manager.LastModified);

            response.ContentType = ContentType;
            response.OutputStream.Write(bytes, 0, bytes.Length);
        }
Esempio n. 22
0
        /// <summary>
        /// Sets up the current page or handler to use GZip through a Response.Filter
        /// IMPORTANT:
        /// You have to call this method before any output is generated!
        /// </summary>
        public static void GZipEncodePage(ActionExecutingContext filterContext)
        {
            HttpRequestBase request        = filterContext.HttpContext.Request;
            string          acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }

            //if (request.Headers["Accept"] == "application/json")
            //    return;

            acceptEncoding = acceptEncoding.ToUpperInvariant();
            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }

            // Allow proxy servers to cache encoded and unencoded versions separately
            response.AppendHeader("Vary", "Content-Encoding");
        }
Esempio n. 23
0
        public static void PrepareCompression(HttpRequestBase request, HttpResponseBase response)
        {
            var isCompressionEnabled = true;

            if (request.Url.ToString().Contains("disableCompress=1"))
            {
                isCompressionEnabled = false;
            }

            if (isCompressionEnabled)
            {
                var encodings = request.Headers.Get("Accept-Encoding");
                if (encodings != null)
                {
                    // Check the browser accepts deflate or gzip (deflate takes preference)
                    encodings = encodings.ToLower();
                    if (encodings.Contains("deflate"))
                    {
                        response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                        response.AppendHeader("Content-Encoding", "deflate");
                        response.AppendHeader("Vary", "Content-Encoding");
                    }
                    else if (encodings.Contains("gzip"))
                    {
                        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                        response.AppendHeader("Content-Encoding", "gzip");
                        response.AppendHeader("Vary", "Content-Encoding");
                    }
                }
            }
        }
Esempio n. 24
0
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            string acceptEncoding = request.Headers["Accept-Encoding"];

            if (string.IsNullOrEmpty(acceptEncoding))
            {
                return;
            }

            acceptEncoding = acceptEncoding.ToUpperInvariant();

            HttpResponseBase response = filterContext.HttpContext.Response;

            if (acceptEncoding.Contains("GZIP"))
            {
                response.AppendHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("DEFLATE"))
            {
                response.AppendHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
Esempio n. 25
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpRequestBase request = filterContext.HttpContext.Request;

            string[]             supported      = new string[] { "gzip", "deflate" };
            IEnumerable <string> preferredOrder = new AcceptList(request.Headers["Accept-Encoding"], supported);
            string           preferred          = preferredOrder.FirstOrDefault();
            HttpResponseBase response           = filterContext.HttpContext.Response;

            switch (preferred)
            {
            case "gzip":
                response.AppendHeader("Content-Encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                break;

            case "deflate":
                response.AppendHeader("Content-Encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                break;

            case "identity":
            default:
                break;
            }
        }
Esempio n. 26
0
        /// <summary>
        /// 应用客户端缓存策略
        /// </summary>
        public void ApplyClientCachePolicy(HttpResponseBase response)
        {
            string cacheControl;

            switch (_cacheability)
            {
            case HttpCacheability.NoCache:
                cacheControl = "no-cache";
                break;

            case HttpCacheability.Public:
                cacheControl = "public";
                break;

            default:
            case HttpCacheability.Private:
                cacheControl = "private";
                break;
            }


            if (cacheControl != "no-cache")
            {
                if (_maxAge != null)
                {
                    cacheControl += ",max-age=" + (int)_maxAge.Value.TotalSeconds;
                }

                if (_sMaxAge != null)
                {
                    cacheControl += ",s-maxage=" + (int)_sMaxAge.Value.TotalSeconds;
                }
            }

            response.AppendHeader("Cache-Control", cacheControl);


            if (_expires != null)
            {
                response.AppendHeader("Expires", _expires.Value.ToString("R"));
            }


            if (_lastModified != null)
            {
                response.AppendHeader("Last-Modified", _lastModified.Value.ToString("R"));
            }


            if (_etag != null)
            {
                response.AppendHeader("ETag", _etag);
            }

            if (_varyHeaders != null && _varyHeaders.Any())
            {
                response.AppendHeader("Vary", string.Join(",", _varyHeaders));
            }
        }
Esempio n. 27
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            response.ClearHeaders();
            response.AppendHeader("Cache-Control", "private, no-cache, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0");
            response.AppendHeader("Pragma", "no-cache");
            response.AppendHeader("Expires", "-1");
            HttpCachePolicyBase cache = response.Cache;

            cache.SetCacheability(HttpCacheability.NoCache);

            if (string.IsNullOrEmpty(this.Filename))
            {
                this.Filename = "data.csv";
            }
            response.ContentType = "application/octet-stream";
            response.AddHeader("Content-Disposition", "attachment;filename=" + this.Filename);

            if (this.ContentEncoding == null)
            {
                this.ContentEncoding = System.Text.Encoding.GetEncoding("Shift_JIS");
                //this.ContentEncoding = System.Text.Encoding.UTF8;
            }
            response.ContentEncoding = this.ContentEncoding;

            if (this.Data != null)
            {
                //見出し行を出力。
                OutputHeader(response);

                //各行のデータを出力。
                foreach (object item in this.Data)
                {
                    OutputLine(response, item);
                }
            }
            else
            {
                //見出し行を出力。
                OutputHeaderFromDataTable(response);

                //各行のデータを出力。
                foreach (DataRow dr in this.dataTable.Rows)
                {
                    OutputLineFromDataTable(response, dr);
                }
            }
        }
Esempio n. 28
0
        public static void ToExcel(DataSet dsInput, string filename, HttpResponseBase response)
        {
            var excelXml = GetExcelXml(dsInput, filename);

            response.Clear();
            response.AppendHeader("Content-Type", "application/vnd.ms-excel");
            response.AppendHeader("Content-disposition", "attachment; filename=" + filename);
            response.Write(excelXml);
            response.Flush();
            response.End();
        }
Esempio n. 29
0
        public void Generate(string xml, HttpResponseBase resp)
        {
            var data = new MemoryStream();

            resp.ContentType    = ContentType;
            resp.HeaderEncoding = Encoding.UTF8;
            resp.AppendHeader("Content-Disposition", "attachment;filename=grid.xlsx");
            resp.AppendHeader("Cache-Control", "max-age=0");
            Generate(xml, data);

            data.WriteTo(resp.OutputStream);
        }
Esempio n. 30
0
 private void RenderHeaders(HttpResponseBase response)
 {
     foreach (var metric in _metrics)
     {
         if (metric.Type == MetricType.Duration)
         {
             response.AppendHeader("Server-Timing", $"{metric.Name};dur={metric.Value}");
         }
         else
         {
             response.AppendHeader($"x-serpentine-{metric.Name}", $"{metric.Value}");
         }
     }
 }