HeaderMiddleware.cs 829 B

1234567891011121314151617181920212223242526272829303132
  1. using Microsoft.AspNetCore.Mvc;
  2. namespace Hotline.Api.Middleware;
  3. /// <summary>
  4. /// 为特定的返回结果添加 头部信息 的中间件
  5. /// </summary>
  6. public class HeaderMiddleware
  7. {
  8. private readonly RequestDelegate _next;
  9. public HeaderMiddleware(RequestDelegate next)
  10. {
  11. _next = next;
  12. }
  13. public async Task InvokeAsync(HttpContext context)
  14. {
  15. await _next(context);
  16. // 为返回类型是 FileStreamResult 的请求添加 头部信息
  17. if (context.Response.StatusCode == StatusCodes.Status200OK)
  18. {
  19. var result = context.Items["Result"] as IActionResult;
  20. if (result is FileStreamResult)
  21. {
  22. context.Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");
  23. }
  24. }
  25. }
  26. }