public static IAppBuilder UseHangfireHttpJobAgent(this IAppBuilder app, IServiceCollection services, Action <JobAgentOptionsConfigurer> configureOptions = null) #endif { #if NETCORE var sp = app.ApplicationServices; #else var sp = services.BuildServiceProvider();//OWIN var configRoot = sp.GetRequiredService <IConfiguration>(); services.Configure <JobAgentOptions>(configRoot.GetSection("JobAgent")); sp = services.BuildServiceProvider();//OWIN #endif var evt = new EventId(1, "Hangfire.HttpJob.Agent"); var loggerFactory = sp.GetService <ILoggerFactory>(); var logger = loggerFactory.CreateLogger <JobAgentMiddleware>(); var options = sp.GetService <IOptions <JobAgentOptions> >(); var configurer = new JobAgentOptionsConfigurer(options.Value); try { configureOptions?.Invoke(configurer); } catch (Exception exception) { logger.LogCritical(evt, exception, "Failed to configure JobAgent middleware"); } if (options.Value.Enabled) { if (string.IsNullOrEmpty(options.Value.SitemapUrl)) { options.Value.SitemapUrl = "/jobagent"; } logger.LogInformation(evt, "【HttpJobAgent】 - Registered HttpJobAgent middleware to respond to {path}", new { path = options.Value.SitemapUrl }); #if NETCORE app.Map(options.Value.SitemapUrl, robotsApp => { robotsApp.UseMiddleware <JobAgentMiddleware>(); }); #else app.Map(options.Value.SitemapUrl, robotsApp => { robotsApp.Use <JobAgentMiddleware>(logger, options, loggerFactory, sp); }); var hostService = sp.GetRequiredService <IHostedService>(); hostService.StartAsync(new CancellationToken()).ConfigureAwait(false).GetAwaiter().GetResult(); #endif foreach (KeyValuePair <Type, JobMetaData> jobAgent in JobAgentServiceConfigurer.JobAgentDic) { logger.LogInformation(evt, $"【HttpJobAgent】 - [{jobAgent.Key.Name}] [Transient:{jobAgent.Value.Transien}] [HangJob:{jobAgent.Value.Hang}] - Registered"); } } return(app); }
public static IApplicationBuilder UseHangfireHttpJobAgent(this IApplicationBuilder app, Action <JobAgentOptionsConfigurer> configureOptions = null) { var evt = new EventId(1, "Hangfire.HttpJob.Agent"); var loggerFactory = app.ApplicationServices.GetService <ILoggerFactory>(); var logger = loggerFactory.CreateLogger <JobAgentMiddleware>(); var options = app.ApplicationServices.GetService <IOptions <JobAgentOptions> >(); var configurer = new JobAgentOptionsConfigurer(options.Value); try { configureOptions?.Invoke(configurer); } catch (Exception exception) { logger.LogCritical(evt, exception, "Failed to configure JobAgent middleware"); } if (options.Value.Enabled) { if (string.IsNullOrEmpty(options.Value.SitemapUrl)) { options.Value.SitemapUrl = "/jobagent"; } logger.LogInformation(evt, "【HttpJobAgent】 - Registered HttpJobAgent middleware to respond to {path}", new { path = options.Value.SitemapUrl }); app.Map(options.Value.SitemapUrl, robotsApp => { robotsApp.UseMiddleware <JobAgentMiddleware>(); }); foreach (KeyValuePair <Type, JobMetaData> jobAgent in JobAgentServiceConfigurer.JobAgentDic) { logger.LogInformation(evt, $"【HttpJobAgent】 - [{jobAgent.Key.Name}] [Transient:{jobAgent.Value.Transien}] [HangJob:{jobAgent.Value.Hang}] - Registered"); } } return(app); }