■ Startup을 사용하지 않고 서비스 구성하기
------------------------------------------------------------------------------------------------------------------------
▶ Program.cs
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System;
using TestProject.Data; using TestProject.Models;
namespace TestProject { /// <summary> /// 프로그램 /// </summary> public class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main(argumentArray)
/// <summary> /// 프로그램 시작하기 /// </summary> /// <param name="argumentArray">배열 인자</param> public static void Main(string[] argumentArray) { IHost host = CreateHostBuilder(argumentArray).Build();
using(IServiceScope scope = host.Services.CreateScope()) { IServiceProvider serviceProvider = scope.ServiceProvider;
try { TestData.Initialize(serviceProvider); } catch(Exception exception) { ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>();
logger.LogError(exception, "데이터베이스에 데이터 추가시 에러가 발생했습니다."); } }
host.Run(); }
#endregion #region 호스트 빌더 생성하기 - CreateHostBuilder(argumentArray)
/// <summary> /// 호스트 빌더 생성하기 /// </summary> /// <param name="argumentArray">인자 배열</param> /// <returns>호스트 빌더</returns> public static IHostBuilder CreateHostBuilder(string[] argumentArray) => Host.CreateDefaultBuilder(argumentArray) .ConfigureAppConfiguration ( (builderContext, configuration) => { } ) .ConfigureWebHostDefaults ( builder => { builder.ConfigureServices ( services => { services.AddDbContext<DatabaseContext>(options => options.UseInMemoryDatabase("TestDB"));
services.AddControllersWithViews(); } ) .Configure ( app => { ILoggerFactory loggerFactory = app.ApplicationServices.GetRequiredService<ILoggerFactory>(); ILogger<Program> logger = loggerFactory.CreateLogger<Program>(); IWebHostEnvironment environment = app.ApplicationServices.GetRequiredService<IWebHostEnvironment>(); IConfiguration configuration = app.ApplicationServices.GetRequiredService<IConfiguration>();
if(environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); }
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints ( endpointRouterBuilder => { endpointRouterBuilder.MapControllers(); } ); } ); } );
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
댓글을 달아 주세요