1. 程式人生 > 實用技巧 >netcore---Program.cs配置相關資訊,及讀取配置資訊

netcore---Program.cs配置相關資訊,及讀取配置資訊

程式碼:

 1 using Autofac;
 2 using Autofac.Extensions.DependencyInjection;
 3 using Microsoft.EntityFrameworkCore;
 4 using Microsoft.Extensions.Configuration;
 5 using Microsoft.Extensions.DependencyInjection;
 6 using Microsoft.Extensions.Hosting;
 7 using Serilog;
 8 using System.Reflection;
 9 using
Yanwen.PLM.Entity; 10 11 namespace Yanwen.PLM.Worker 12 { 13 public class Program 14 { 15 private static IConfiguration Configuration { get; set; } 16 17 public static void Main(string[] args) 18 { 19 CreateHostBuilder(args).Build().Run(); 20 } 21
22 public static IHostBuilder CreateHostBuilder(string[] args) 23 => Host.CreateDefaultBuilder(args) 24 .UseServiceProviderFactory(new AutofacServiceProviderFactory()) 25 .ConfigureAppConfiguration((hostingContext, config) => { 26 //var env = hostingContext.HostingEnvironment;
27 //config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) 28 // .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); 29 Configuration = config.Build(); 30 }) 31 .ConfigureServices(ConfigureServices) 32 .ConfigureContainer<ContainerBuilder>(ConfigureContainer) 33 .UseSerilog((ctx, config) => config.ReadFrom.Configuration(ctx.Configuration)); 34 35 private static void ConfigureServices(IServiceCollection services) 36 { 37 services.AddHostedService<Worker>(); 38 services.AddScoped<DbContext, MySqlDbContext>(); 39 services.AddDbContext<MySqlDbContext>(options => 40 options.UseMySql(Configuration.GetConnectionString("Default"))); 41 42 var section = Configuration.GetSection("Redis:Default"); 43 string instanceName = section.GetSection("InstanceName").Value; 44 string connectionString = section.GetSection("Connection").Value; 45 int defaultDB = int.Parse(section.GetSection("DefaultDB").Value ?? "0"); 46 services.AddSingleton(new MyRedis(connectionString, instanceName, defaultDB)); 47 } 48 49 private static void ConfigureContainer(ContainerBuilder containerBuilder) 50 { 51 // containerBuilder.RegisterType<EstimaterateService>().As<IEstimaterateService>(); 52 var dataAccess = Assembly.GetExecutingAssembly(); 53 containerBuilder.RegisterAssemblyTypes(dataAccess).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces(); 54 } 55 } 56 }
View Code