public SessionData(Uri upstream, Uri hostUri, Worker worker, TimeSpan sessionTimeout) { Upstream = upstream; HostUri = hostUri; UpstreamHost = new UpstreamHost(upstream.AbsoluteUri); Worker = worker; Timeout = sessionTimeout; }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseMiddleware <Arcus.WebApi.Logging.ExceptionHandlingMiddleware>(); app.UseCorrelation(); app.UseRouting(); //var roundRobin = new RoundRobin //{ // new UpstreamHost("https://codit-mock-server.azure-api.net/ord", weight: 1), // new UpstreamHost("https://codit-mock-server.azure-api.net/cat", weight: 2), // new UpstreamHost("https://codit-mock-server.azure-api.net/prod", weight: 3) //}; #warning Please configure application with HTTPS transport layer security #warning Please configure application with authentication mechanism: https://webapi.arcus-azure.net/features/security/auth/shared-access-key #if DEBUG app.UseSwagger(swaggerOptions => { swaggerOptions.RouteTemplate = "api/{documentName}/docs.json"; }); app.UseSwaggerUI(swaggerUiOptions => { swaggerUiOptions.SwaggerEndpoint("/api/v1/docs.json", "Arcus.Demo.WebAPI"); swaggerUiOptions.RoutePrefix = "api/docs"; swaggerUiOptions.DocumentTitle = "Arcus.Demo.WebAPI"; }); #endif app.UseEndpoints(endpoints => { endpoints.MapGet("/api/orders/{*url}", async x => { // check for everything after orders app.RunProxy(async context => { var host = new UpstreamHost("https://codit-mock-server.azure-api.net/ord"); var response = await context .ForwardTo(host) .Send(); return(response); }); }); endpoints.MapGet("/api/catalog/{*url}", async x => { app.RunProxy(async context => { var host = new UpstreamHost("https://codit-mock-server.azure-api.net/cat"); return(await context .ForwardTo(host) .Send()); }); }); endpoints.MapGet("/api/products/{*url}", async x => { app.RunProxy(async context => { var host = new UpstreamHost("https://codit-mock-server.azure-api.net/prod"); return(await context .ForwardTo(host) .Send()); }); }); endpoints.MapControllerRoute( name: "Health_Get", pattern: "api/v1/health" ); endpoints.MapControllerRoute( name: "Health_Get_Startup", pattern: "/" ); }); //app.UseEndpoints(endpoints => endpoints.MapControllers()); }