///// <summary> ///// 设置全局数据缓存,如果存在仅修改值 ///// </summary> ///// <param name="context">HttpContext</param> ///// <param name="cacheKey">键值名称</param> ///// <param name="objObject">值</param> //public static void SetCache(this HttpContext context, string cacheKey, object objObject) //{ // if (string.IsNullOrWhiteSpace(cacheKey)) // { // throw new System.SystemException("键值名称不能为空!"); // } // if (context.Cache == null || context.Cache[cacheKey] == null) // { // context.Cache.Insert(cacheKey, objObject); // return; // } // context.Cache[cacheKey] = objObject; //} ///// <summary> ///// 设置数据缓存 ///// </summary> ///// <param name="context">HttpContext</param> ///// <param name="cacheKey">键值名称</param> ///// <param name="objObject">值</param> ///// <param name="timeout">单位秒,默认7200秒</param> //public static void SetCache(this HttpContext context, string cacheKey, object objObject, int timeout = 7200) //{ // if (string.IsNullOrWhiteSpace(cacheKey)) // { // throw new System.SystemException("键值名称不能为空!"); // } // //相对过期 // //context.Cache.Insert(cacheKey, objObject, null, DateTime.MaxValue, timeout, CacheItemPriority.NotRemovable, null); // //绝对过期时间 // context.Cache.Insert(cacheKey, objObject, null, DateTime.Now.AddSeconds(timeout), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, null); //} ///// <summary> ///// 获取数据缓存 ///// </summary> ///// <param name="context">HttpContext</param> ///// <param name="cacheKey">键</param> ///// <returns>返回一个值,如果键值名称不存在则返回NULL</returns> //public static object GetCache(this HttpContext context, string cacheKey) //{ // if (string.IsNullOrWhiteSpace(cacheKey)) // { // throw new System.SystemException("键值名称不能为空!"); // } // if (context.Cache == null || context.Cache[cacheKey] == null) // { // return null; // } // return context.Cache.Get(cacheKey); ; //} ///// <summary> ///// 移除指定数据缓存 ///// </summary> ///// <param name="context">HttpContext</param> ///// <param name="cacheKey">键</param> //public static void RemoveCache(this HttpContext context, string cacheKey) //{ // if (string.IsNullOrWhiteSpace(cacheKey)) // { // throw new System.SystemException("键值名称不能为空!"); // } // if (context.Cache == null || context.Cache[cacheKey] == null) // { // return; // } // context.Cache.Remove(cacheKey); //} ///// <summary> ///// 移除全部缓存 ///// </summary> ///// <param name="context">HttpContext</param> //public static void RemoveAllCache(this HttpContext context) //{ // if (context.Cache == null) // { // return; // } // var cacheEnum = context.Cache.GetEnumerator(); // while (cacheEnum.MoveNext()) // { // context.Cache.Remove(cacheEnum.Key.ToString()); // } //} ///// <summary> ///// 调用此方法可以对请求的信息进行压缩处理 ///// </summary> ///// <param name="reques"><see cref="HttpContext"/>对象</param> ///// <returns>返回当前发起请求的用户浏览器是否支持压缩信息 状态:<see cref="bool"/>类型</returns> //public static bool Deflate_Gzip(this HttpContext reques) //{ // string Accept = reques.Request.Headers["Accept-Encoding"]; // if (string.IsNullOrWhiteSpace(Accept)) // { // return false; // } // if (Accept.Contains("gzip")) // { // reques.Response.AppendHeader("Content-Encoding", "gzip"); // reques.Response.Filter = new GZipStream(reques.Response.Filter, CompressionMode.Compress); // return true; // } // else if (Accept.Contains("deflate")) // { // reques.Response.AppendHeader("Content-Encoding", "deflate"); // reques.Response.Filter = new DeflateStream(reques.Response.Filter, CompressionMode.Compress); // return true; // } // return false; //} ///// <summary> ///// 调用此方法可以对请求的信息进行压缩处理 ///// </summary> ///// <param name="reques"><see cref="HttpContext"/>对象</param> ///// <param name="httpEncoding">压缩枚举</param> ///// <returns>返回当前发起请求的用户浏览器是否支持压缩信息 状态:<see cref="bool"/>类型</returns> //public static bool Deflate_Gzip(this HttpContext reques, HttpEncoding httpEncoding) //{ // string Accept = reques.Request.Headers["Accept-Encoding"]; // if (string.IsNullOrWhiteSpace(Accept)) // { // return false; // } // if (httpEncoding == HttpEncoding.gzip) // { // if (Accept.Contains("gzip")) // { // reques.Response.AppendHeader("Content-Encoding", "gzip"); // reques.Response.Filter = new GZipStream(reques.Response.Filter, CompressionMode.Compress); // return true; // } // else // { // return true; // } // } // else if (httpEncoding == HttpEncoding.deflate) // { // if (Accept.Contains("deflate")) // { // reques.Response.AppendHeader("Content-Encoding", "deflate"); // reques.Response.Filter = new DeflateStream(reques.Response.Filter, CompressionMode.Compress); // return true; // } // else // { // return true; // } // } // return false; //} ///// <summary> ///// 解开以压缩的输出流 ///// </summary> ///// <param name="reques"><see cref="HttpContext"/>对象</param> ///// <returns>返回状态</returns> //public static bool DecodeDeflate_Gzip(this HttpContext reques) //{ // string Content = reques.Response.Headers["Content-Encoding"]; // if (string.IsNullOrWhiteSpace(Content)) // { // return false; // } // if (Content.Contains("deflate")) // { // //reques.Response.Headers.Remove("Accept-Encoding"); // reques.Response.Headers.Remove("Content-Encoding"); // reques.Response.Filter = new DeflateStream(reques.Response.Filter, CompressionMode.Decompress); // return true; // } // else if (Content.Contains("gzip")) // { // //reques.Response.Headers.Remove("Accept-Encoding"); // reques.Response.Headers.Remove("Content-Encoding"); // reques.Response.Filter = new GZipStream(reques.Response.Filter, CompressionMode.Decompress); // return true; // } // return false; //} /// <summary> /// 将文件流分流写入 /// </summary> /// <param name="ReadStream">原文件流</param> /// <param name="WriteStream">更新文件流</param> /// <param name="minlen">最小资源大小</param> /// <returns></returns> public static async System.Threading.Tasks.Task StreamMove(System.IO.Stream ReadStream, System.IO.Stream WriteStream, int minlen) { long length = ReadStream.Length; long len = (minlen) > length ? length : (minlen); byte[] slice = new byte[len]; long seekiength = 0; do { int i = await ReadStream.ReadAsync(slice.AsMemory(0, slice.Length)); await WriteStream.WriteAsync(slice.AsMemory(0, i)); await WriteStream.FlushAsync(); seekiength += i; Array.Clear(slice, 0, i); } while (length > seekiength); await ReadStream.DisposeAsync(); }