/// <summary> /// Registers Ocelot with a combination of default middlewares and optional middlewares in the configuration /// </summary> /// <param name="builder"></param> /// <param name="pipelineConfiguration"></param> /// <returns></returns> public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration) { var configuration = await CreateConfiguration(builder); CreateAdministrationArea(builder, configuration); if (UsingRafty(builder)) { SetUpRafty(builder); } ConfigureDiagnosticListener(builder); var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices); pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration); var firstDelegate = pipelineBuilder.Build(); //inject first delegate into first piece of asp.net middleware..maybe not like this //then because we are updating the http context in ocelot it comes out correct for //rest of asp.net.. builder.Use(async(context, task) => { var downstreamContext = new DownstreamContext(context); await firstDelegate.Invoke(downstreamContext); }); return(builder); }
private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration) { var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices); //pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration); //使用自定义管道扩展 2018-11-15 金焰的世界 pipelineBuilder.BuildAhphOcelotPipeline(pipelineConfiguration); var firstDelegate = pipelineBuilder.Build(); /* * inject first delegate into first piece of asp.net middleware..maybe not like this * then because we are updating the http context in ocelot it comes out correct for * rest of asp.net.. */ builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; builder.Use(async(context, task) => { var downstreamContext = new DownstreamContext(context); await firstDelegate.Invoke(downstreamContext); }); return(builder); }
private void WhenIUseAGeneric() { var provider = _services.BuildServiceProvider(); IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider); builder = builder.UseMiddleware <Ocelot.Errors.Middleware.ExceptionHandlerMiddleware>(); var del = builder.Build(); _downstreamContext = new DownstreamContext(new DefaultHttpContext()); del.Invoke(_downstreamContext); }
public void Middleware_Multi_Parameters_Invoke() { var provider = _services.BuildServiceProvider(); IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider); builder = builder.UseMiddleware <MultiParametersInvokeMiddleware>(); var del = builder.Build(); _downstreamContext = new DownstreamContext(new DefaultHttpContext()); del.Invoke(_downstreamContext); }
private void GivenTheDepedenciesAreSetUp() { IConfigurationBuilder test = new ConfigurationBuilder(); var root = test.Build(); var services = new ServiceCollection(); services.AddSingleton <IConfiguration>(root); services.AddOcelot(); var provider = services.BuildServiceProvider(); _builder = new OcelotPipelineBuilder(provider); }
private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration) { OcelotPipelineBuilder ocelotPipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices); ocelotPipelineBuilder.BuildOcelotPipeline(pipelineConfiguration); OcelotRequestDelegate firstDelegate = ocelotPipelineBuilder.Build(); builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; builder.Use(async delegate(HttpContext context, Func <Task> task) { DownstreamContext downstreamContext = new DownstreamContext(context); await firstDelegate(downstreamContext); }); return(builder); }
private static IApplicationBuilder CreateOcelotPipeline(IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration) { var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices); pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration); var firstDelegate = pipelineBuilder.Build(); builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; builder.Use(async(context, task) => { var downstreamContext = new DownstreamContext(context); await firstDelegate.Invoke(downstreamContext); }); return(builder); }
private void WhenIUseAFunc() { _counter = 0; var provider = _services.BuildServiceProvider(); IOcelotPipelineBuilder builder = new OcelotPipelineBuilder(provider); builder = builder.Use(async(ctx, next) => { _counter++; await next.Invoke(); }); var del = builder.Build(); _downstreamContext = new DownstreamContext(new DefaultHttpContext()); del.Invoke(_downstreamContext); }
public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action <IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction, OcelotPipelineConfiguration configuration) { await CreateConfiguration(app); ConfigureDiagnosticListener(app); OcelotPipelineBuilder ocelotPipelineBuilder = new OcelotPipelineBuilder(app.ApplicationServices); builderAction?.Invoke(ocelotPipelineBuilder, configuration ?? new OcelotPipelineConfiguration()); OcelotRequestDelegate ocelotDelegate = ocelotPipelineBuilder.Build(); app.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; app.Use(async delegate(HttpContext context, Func <Task> task) { DownstreamContext downstreamContext = new DownstreamContext(context); await ocelotDelegate(downstreamContext); }); return(app); }
private void GivenTheDepedenciesAreSetUp() { IConfigurationBuilder test = new ConfigurationBuilder(); var root = test.Build(); var services = new ServiceCollection(); services.AddSingleton <IConfiguration>(root); services.AddDiscoveryClient(new DiscoveryOptions { ClientType = DiscoveryClientType.EUREKA, ClientOptions = new EurekaClientOptions() { ShouldFetchRegistry = false, ShouldRegisterWithEureka = false } }); services.AddOcelot(); var provider = services.BuildServiceProvider(); _builder = new OcelotPipelineBuilder(provider); }
public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder builder, OcelotPipelineConfiguration pipelineConfiguration) { var configuration = await CreateConfiguration(builder); CreateAdministrationArea(builder, configuration); if (UsingRafty(builder)) { SetUpRafty(builder); } if (UsingEurekaServiceDiscoveryProvider(configuration)) { builder.UseDiscoveryClient(); } ConfigureDiagnosticListener(builder); var pipelineBuilder = new OcelotPipelineBuilder(builder.ApplicationServices); pipelineBuilder.BuildOcelotPipeline(pipelineConfiguration); var firstDelegate = pipelineBuilder.Build(); /* * inject first delegate into first piece of asp.net middleware..maybe not like this * then because we are updating the http context in ocelot it comes out correct for * rest of asp.net.. */ builder.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; builder.Use(async(context, task) => { var downstreamContext = new DownstreamContext(context); await firstDelegate.Invoke(downstreamContext); }); return(builder); }
public static async Task <IApplicationBuilder> UseOcelot(this IApplicationBuilder app, Action <IOcelotPipelineBuilder, OcelotPipelineConfiguration> builderAction, OcelotPipelineConfiguration configuration) { var internalConfiguration = await CreateConfiguration(app); // initConfiguration ConfigureDiagnosticListener(app); var ocelotPipelineBuilder = new OcelotPipelineBuilder(app.ApplicationServices); builderAction?.Invoke(ocelotPipelineBuilder, configuration ?? new OcelotPipelineConfiguration()); var ocelotDelegate = ocelotPipelineBuilder.Build(); app.Properties["analysis.NextMiddlewareName"] = "TransitionToOcelotMiddleware"; app.Use(async(context, task) => { var downstreamContext = new DownstreamContext(context); await ocelotDelegate.Invoke(downstreamContext); }); return(app); }