64 lines
2.2 KiB
C#
64 lines
2.2 KiB
C#
using FastGithub.HttpServer.HttpMiddlewares;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace FastGithub
|
|
{
|
|
/// <summary>
|
|
/// ApplicationBuilder扩展
|
|
/// </summary>
|
|
public static class ApplicationBuilderExtensions
|
|
{
|
|
/// <summary>
|
|
/// 使用http代理策略中间件
|
|
/// </summary>
|
|
/// <param name="app"></param>
|
|
/// <returns></returns>
|
|
public static IApplicationBuilder UseHttpProxyPac(this IApplicationBuilder app)
|
|
{
|
|
var middleware = app.ApplicationServices.GetRequiredService<HttpProxyPacMiddleware>();
|
|
return app.Use(next => context => middleware.InvokeAsync(context, next));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 使用请求日志中间件
|
|
/// </summary>
|
|
/// <param name="app"></param>
|
|
/// <returns></returns>
|
|
public static IApplicationBuilder UseRequestLogging(this IApplicationBuilder app)
|
|
{
|
|
var middleware = app.ApplicationServices.GetRequiredService<RequestLoggingMiddleware>();
|
|
return app.Use(next => context => middleware.InvokeAsync(context, next));
|
|
}
|
|
|
|
/// <summary>
|
|
/// 禁用请求日志中间件
|
|
/// </summary>
|
|
/// <param name="app"></param>
|
|
/// <returns></returns>
|
|
public static IApplicationBuilder DisableRequestLogging(this IApplicationBuilder app)
|
|
{
|
|
return app.Use(next => context =>
|
|
{
|
|
var loggingFeature = context.Features.Get<IRequestLoggingFeature>();
|
|
if (loggingFeature != null)
|
|
{
|
|
loggingFeature.Enable = false;
|
|
}
|
|
return next(context);
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 使用反向代理中间件
|
|
/// </summary>
|
|
/// <param name="app"></param>
|
|
/// <returns></returns>
|
|
public static IApplicationBuilder UseHttpReverseProxy(this IApplicationBuilder app)
|
|
{
|
|
var middleware = app.ApplicationServices.GetRequiredService<HttpReverseProxyMiddleware>();
|
|
return app.Use(next => context => middleware.InvokeAsync(context, next));
|
|
}
|
|
}
|
|
}
|