Saturday, August 22, 2020

Host Hangfire Dashboard with Windows Services without OWIN

 1. Add Startup class to the Windows Service project as below:


using Hangfire;

using Hangfire.Dashboard;

using Microsoft.AspNetCore.Builder;

using Microsoft.AspNetCore.Hosting;

using Microsoft.Extensions.Configuration;

using Microsoft.Extensions.DependencyInjection;


public class Startup  {

        public IConfiguration Configuration { get; }

        public Startup(IConfiguration configuration) {

            Configuration = configuration;

        }

         public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {

            app.UseHangfireDashboard();

        }

         public void ConfigureServices(IServiceCollection services) {

            services.AddHangfire(configuration => configuration

              .UseSqlServerStorage(

                    Configuration.GetConnectionString("DatabaseConnectionString")

            ));

         }

    }


2. Add/ Modify program class as below:


using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Reflection;

using Hangfire;

using Microsoft.AspNetCore.Hosting;

using Microsoft.AspNetCore.Server.HttpSys;

using Microsoft.Extensions.Configuration;

using Microsoft.Extensions.DependencyInjection;

using Microsoft.Extensions.Hosting;


public class Program {

        public static void Main(string[] args) {

            CreateHostBuilder(args).Build().Run();

        }

         public static IHostBuilder CreateHostBuilder(string[] args) =>

            Host.CreateDefaultBuilder(args)

                .ConfigureServices((hostContext, services) =>    {

                    GlobalConfiguration.Configuration

                                       .UseSqlServerStorage(hostContext.Configuration

                                       .GetConnectionString("DbConnectionString"))

                                       .UseConsole();

                })

                .UseWindowsService()

                .ConfigureWebHostDefaults(webBuilder =>    {

                    webBuilder.UseHttpSys(options =>   {

                             options.Authentication.AllowAnonymous = false;

                             options.Authentication.Schemes = AuthenticationSchemes.NTLM;

                         })

                            .UseStartup<Startup>();

                });

}


3. Run the Windows service project and access the Hangfire dashboard page from the browser through the below default URL:

http://localhost:5000/hangfire

No comments:

Post a Comment