Files
Yi.Admin/Yi.Framework/Yi.Framework.WebCore/MiddlewareExtend/StaticPageMiddleware.cs

156 lines
5.5 KiB
C#
Raw Normal View History

2021-10-10 19:10:40 +08:00
//using Microsoft.AspNetCore.Builder;
//using Microsoft.AspNetCore.Http;
//using System;
//using System.Collections.Generic;
//using System.IO;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
//namespace CC.ElectronicCommerce.WebCore.MiddlewareExtend
//{
// /// <summary>
// /// 支持在返回HTML时将返回的Stream保存到指定目录
// /// </summary>
// public class StaticPageMiddleware
// {
// private readonly RequestDelegate _next;
// private string _directoryPath = @"D:/cc-ec/";
// private bool _supportDelete = false;
// private bool _supportWarmup = false;
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// public StaticPageMiddleware(RequestDelegate next, string directoryPath, bool supportDelete, bool supportWarmup)
// {
// this._next = next;
// this._directoryPath = directoryPath;
// this._supportDelete = supportDelete;
// this._supportWarmup = supportWarmup;
// }
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// public async Task InvokeAsync(HttpContext context)
// {
// if (this._supportDelete && "Delete".Equals(context.Request.Query["ActionHeader"]))
// {
// this.DeleteHmtl(context.Request.Path.Value);
// context.Response.StatusCode = 200;
// }
// else if (this._supportWarmup && "ClearAll".Equals(context.Request.Query["ActionHeader"]))
// {
// this.ClearDirectory(10);//考虑数据量
// context.Response.StatusCode = 200;
// }
// else if (!context.Request.IsAjaxRequest())
// {
// Console.WriteLine($"This is StaticPageMiddleware InvokeAsync {context.Request.Path.Value}");
// #region context.Response.Body
// var originalStream = context.Response.Body;
// using (var copyStream = new MemoryStream())
// {
// context.Response.Body = copyStream;
// await _next(context);
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// copyStream.Position = 0;
// var reader = new StreamReader(copyStream);
// var content = await reader.ReadToEndAsync();
// string url = context.Request.Path.Value;
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// this.SaveHmtl(url, content);
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// copyStream.Position = 0;
// await copyStream.CopyToAsync(originalStream);
// context.Response.Body = originalStream;
// }
// #endregion
// }
// else
// {
// await _next(context);
// }
// }
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// private void SaveHmtl(string url, string html)
// {
// try
// {
// //Console.WriteLine($"Response: {html}");
// if (string.IsNullOrWhiteSpace(html))
// return;
// if (!url.EndsWith(".html"))
// return;
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// if (Directory.Exists(_directoryPath) == false)
// Directory.CreateDirectory(_directoryPath);
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// var totalPath = Path.Combine(_directoryPath, url.Split("/").Last());
// File.WriteAllText(totalPath, html);//直接覆盖
// }
// catch (Exception ex)
// {
// Console.WriteLine(ex.Message);
// }
// }
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// /// <summary>
// /// 删除某个页面
// /// </summary>
// /// <param name="url"></param>
// /// <param name="index"></param>
// private void DeleteHmtl(string url)
// {
// try
// {
// if (!url.EndsWith(".html"))
// return;
// var totalPath = Path.Combine(_directoryPath, url.Split("/").Last());
// File.Delete(totalPath);//直接删除
// }
// catch (Exception ex)
// {
// Console.WriteLine($"Delete {url} 异常,{ex.Message}");
// }
// }
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// /// <summary>
// /// 清理文件,支持重试
// /// </summary>
// /// <param name="index">最多重试次数</param>
// private void ClearDirectory(int index)
// {
// if (index > 0)//简陋版---重试index次
// {
// try
// {
// var files = Directory.GetFiles(_directoryPath);
// foreach (var file in files)
// {
// File.Delete(file);
// }
// }
// catch (Exception ex)
// {
// Console.WriteLine($"ClearDirectory failed {ex.Message}");
// ClearDirectory(index--);
// }
// }
// }
// }
2021-10-10 17:30:31 +08:00
2021-10-10 19:10:40 +08:00
// /// <summary>
// /// 扩展中间件
// /// </summary>
// public static class StaticPageMiddlewareExtensions
// {
// /// <summary>
// ///
// /// </summary>
// /// <param name="app"></param>
// /// <param name="directoryPath">文件写入地址,文件夹目录</param>
// /// <param name="supportDelete">是否支持删除</param>
// /// <param name="supportClear">是否支持全量删除</param>
// /// <returns></returns>
// public static IApplicationBuilder UseStaticPageMiddleware(this IApplicationBuilder app, string directoryPath, bool supportDelete, bool supportClear)
// {
// return app.UseMiddleware<StaticPageMiddleware>(directoryPath, supportDelete, supportClear);
// }
// }
//}