ApplicationBuilderExtensions.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using FastGithub.HttpServer.HttpMiddlewares;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.Extensions.DependencyInjection;
  4. namespace FastGithub
  5. {
  6. /// <summary>
  7. /// ApplicationBuilder扩展
  8. /// </summary>
  9. public static class ApplicationBuilderExtensions
  10. {
  11. /// <summary>
  12. /// 使用http代理策略中间件
  13. /// </summary>
  14. /// <param name="app"></param>
  15. /// <returns></returns>
  16. public static IApplicationBuilder UseHttpProxyPac(this IApplicationBuilder app)
  17. {
  18. var middleware = app.ApplicationServices.GetRequiredService<HttpProxyPacMiddleware>();
  19. return app.Use(next => context => middleware.InvokeAsync(context, next));
  20. }
  21. /// <summary>
  22. /// 使用请求日志中间件
  23. /// </summary>
  24. /// <param name="app"></param>
  25. /// <returns></returns>
  26. public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder app)
  27. {
  28. var middleware = app.ApplicationServices.GetRequiredService<RequestLoggingMiddleware>();
  29. return app.Use(next => context => middleware.InvokeAsync(context, next));
  30. }
  31. /// <summary>
  32. /// 禁用请求日志中间件
  33. /// </summary>
  34. /// <param name="app"></param>
  35. /// <returns></returns>
  36. public static IApplicationBuilder DisableRequestLogging(this IApplicationBuilder app)
  37. {
  38. return app.Use(next => context =>
  39. {
  40. var loggingFeature = context.Features.Get<IRequestLoggingFeature>();
  41. if (loggingFeature != null)
  42. {
  43. loggingFeature.Enable = false;
  44. }
  45. return next(context);
  46. });
  47. }
  48. /// <summary>
  49. /// 使用反向代理中间件
  50. /// </summary>
  51. /// <param name="app"></param>
  52. /// <returns></returns>
  53. public static IApplicationBuilder UseHttpReverseProxy(this IApplicationBuilder app)
  54. {
  55. var middleware = app.ApplicationServices.GetRequiredService<HttpReverseProxyMiddleware>();
  56. return app.Use(next => context => middleware.InvokeAsync(context, next));
  57. }
  58. }
  59. }