Program.cs 2.59 KB
using FreeSql;
using HHECS.DAQWebClient.Hubs;
using HHECS.DAQWebClient.Services;
using Microsoft.AspNetCore.Authentication.Cookies;
using NLog.Web;

namespace HHECS.DAQWebClient
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.
            builder.Services.AddControllersWithViews();
            builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
                {
                    options.LoginPath = "/Account/Login";
                    options.LogoutPath = "/Account/Logout";
                    options.ExpireTimeSpan = TimeSpan.FromDays(30);
                    options.SlidingExpiration = true;
                });
            builder.Services.AddHttpClient();
            builder.Services.AddSingleton<IOTCloudService>();
            var connectionString = builder.Configuration.GetConnectionString("Default");
            var fsql = new FreeSqlBuilder().UseConnectionString(DataType.Sqlite, connectionString).Build();
            builder.Services.AddSingleton(fsql);
            builder.Services.AddSingleton<CommonService>();
            builder.Services.AddSignalR();
            builder.Services.AddHostedService<SystemBackgroundService>();
            builder.Services.AddHostedService<IOTCloudBackgroundService>();

            //builder.Services.AddLogging(x => x.AddNLog());
            // NLog: Setup NLog for Dependency injection
            builder.Logging.ClearProviders();
            builder.Host.UseNLog();
            var app = builder.Build();

            // Configure the HTTP request pipeline.
            if (!app.Environment.IsDevelopment())
            {
                app.UseExceptionHandler("/Home/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();
            app.UseAuthentication();
            app.UseAuthorization();

            app.MapControllerRoute(
                name: "Area",
                pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");

            app.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
            app.MapHub<DAQHub>("/DAQHub");
            app.Run();
        }
    }
}