ASP.NET Core 응용 프로그램 시작Application Startup in ASP.NET Core

Steve SmithTom DykstraBy Steve Smith and Tom Dykstra

Startup 클래스 서비스 및 응용 프로그램의 요청 파이프라인을 구성 합니다.The Startup class configures services and the application's request pipeline.

시작 클래스입니다.The Startup class

ASP.NET Core 응용 프로그램에서는 한 Startup 클래스 이름으로 지정 된 Startup 규칙에 따라 합니다.ASP.NET Core apps require a Startup class, which is named Startup by convention. 에 시작 클래스 이름을 지정 하는 Main 프로그램의 WebHostBuilderExtensions UseStartup<TStartup> 메서드.You specify the startup class name in the Main program's WebHostBuilderExtensions UseStartup<TStartup> method. 참조 호스팅 에 대 한 자세한 내용은 WebHostBuilder, 하기 전에 실행 되는 Startup합니다.See Hosting to learn more about WebHostBuilder, which runs before Startup.

별도 정의한 Startup 다양 한 환경 및 적절 한 런타임 시 선택 하나에 대 한 클래스입니다.You can define separate Startup classes for different environments, and the appropriate one will be selected at runtime. 지정 하는 경우 startupAssemblyWebHost 구성 호스팅 옵션을 해당 시작 어셈블리를 로드 하 고 검색할 또는 Startup 또는 Startup[Environment] 유형입니다.If you specify startupAssembly in the WebHost configuration or options, hosting will load that startup assembly and search for a Startup or Startup[Environment] type. 현재 환경 우선 순위가 지정 해당 이름 접미사 일치, 하면 앱에서 실행 되는 클래스는 개발 환경 모두 포함 하 고는 StartupStartupDevelopment 클래스는 StartupDevelopment 클래스 됩니다. 사용.The class whose name suffix matches the current environment will be prioritized, so if the app is run in the Development environment, and includes both a Startup and a StartupDevelopment class, the StartupDevelopment class will be used. 참조 FindStartupTypeStartupLoader여러 환경 작업합니다.See FindStartupType in StartupLoader and Working with multiple environments.

또는 정의할 수 있습니다는 고정 Startup 호출 하 여 환경에 관계 없이 사용 되는 클래스 UseStartup<TStartup>합니다.Alternatively, you can define a fixed Startup class that will be used regardless of the environment by calling UseStartup<TStartup>. 이는 권장되는 방법입니다.This is the recommended approach.

Startup 클래스 생성자를 통해 제공 되는 종속성을 수락할 수 있는 종속성 주입합니다.The Startup class constructor can accept dependencies that are provided through dependency injection. 사용 하는 일반적인 방법은 것 IHostingEnvironment 를 설정 하려면 구성 원본입니다.A common approach is to use IHostingEnvironment to set up configuration sources.

Startup 클래스에 포함 해야 합니다는 Configure 메서드 및 선택적으로 포함할 수는 ConfigureServices 응용 프로그램을 시작할 때 호출 되는 메서드.The Startup class must include a Configure method and can optionally include a ConfigureServices method, both of which are called when the application starts. 클래스를 포함할 수도 이러한 메서드의 환경별 버전합니다.The class can also include environment-specific versions of these methods. ConfigureServices있는 경우 전에 호출 됩니다 Configure합니다.ConfigureServices, if present, is called before Configure.

에 대 한 자세한 내용은 응용 프로그램 시작 하는 동안 예외를 처리합니다.Learn about handling exceptions during application startup.

ConfigureServices 메서드The ConfigureServices method

ConfigureServices 방법은 선택 사항 이지만 사용 하는 경우 전에 호출 됩니다는 Configure 웹 호스트에 의해 메서드.The ConfigureServices method is optional; but if used, it's called before the Configure method by the web host. 웹 호스트 되기 전에 일부 서비스를 구성할 수 있습니다 Startup 메서드가 호출 되어 (참조 호스팅).The web host may configure some services before Startup methods are called (see hosting). 규칙에 따라 구성 옵션 이 메서드에서 설정 됩니다.By convention, Configuration options are set in this method.

상당한 설치 해야 하는 기능에 대 한 없는 Add[Service] 에 확장 메서드 IServiceCollection합니다.For features that require substantial setup there are Add[Service] extension methods on IServiceCollection. 이 예제에서는 기본 웹 사이트 서식 파일에서 서비스 Entity Framework, Id 및 MVC를 사용 하도록 앱을 구성 합니다.This example from the default web site template configures the app to use services for Entity Framework, Identity, and MVC:

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<ApplicationDbContext>()
        .AddDefaultTokenProviders();

    services.AddMvc();

    // Add application services.
    services.AddTransient<IEmailSender, AuthMessageSender>();
    services.AddTransient<ISmsSender, AuthMessageSender>();
}

서비스 컨테이너에 서비스를 추가 하면 사용할 수를 통해 응용 프로그램 내에서 종속성 주입합니다.Adding services to the services container makes them available within your application via dependency injection.

시작에 사용할 수 있는 서비스Services Available in Startup

종속성 주입 ASP.NET Core 응용 프로그램의 시작 하는 동안 서비스를 제공합니다.ASP.NET Core dependency injection provides services during an application's startup. 에 매개 변수로 적절 한 인터페이스를 포함 하 여 이러한 서비스를 요청할 수 있습니다 프로그램 Startup 클래스의 생성자 나 해당 Configure 메서드.You can request these services by including the appropriate interface as a parameter on your Startup class's constructor or its Configure method. ConfigureServices 만 메서드에서 IServiceCollection 매개 변수 (하지만 있어 추가 매개 변수가 필요 하지 않습니다.이 컬렉션에서 검색할 수 있는 등록 된 서비스 있습니다).The ConfigureServices method only takes an IServiceCollection parameter (but any registered service can be retrieved from this collection, so additional parameters are not necessary).

다음은 일반적으로 요청 하는 서비스의 Startup 메서드:Below are some of the services typically requested by Startup methods:

  • 생성자에서: IHostingEnvironment,ILogger<Startup>In the constructor: IHostingEnvironment, ILogger<Startup>
  • ConfigureServices:IServiceCollectionIn ConfigureServices: IServiceCollection
  • Configure: IApplicationBuilder, IHostingEnvironment,ILoggerFactoryIn Configure: IApplicationBuilder, IHostingEnvironment, ILoggerFactory

의해 추가 된 모든 서비스는 WebHostBuilder ConfigureServices 메서드를 요청할 수 있습니다는 Startup 클래스 생성자 나 해당 Configure 메서드.Any services added by the WebHostBuilder ConfigureServices method may be requested by the Startup class constructor or its Configure method. 사용 하 여 WebHostBuilder 서비스를 제공 하는 동안 필요한 Startup 메서드.Use WebHostBuilder to provide any services you need during Startup methods.

Configure 메서드The Configure method

Configure 메서드는 ASP.NET 응용 프로그램이 HTTP 요청에 응답 하는 방법을 지정 하는 데 사용 됩니다.The Configure method is used to specify how the ASP.NET application will respond to HTTP requests. 요청 파이프라인을 추가 하 여 구성할 미들웨어 구성 요소는 IApplicationBuilder 종속성 주입에서 제공 되는 인스턴스.The request pipeline is configured by adding middleware components to an IApplicationBuilder instance that is provided by dependency injection.

기본 웹 사이트 서식 파일에서 다음 예제에서는 여러 확장 메서드를 지 원하는 파이프라인을 구성 하 사용 됩니다 BrowserLink, 오류 페이지, 정적 파일, ASP.NET MVC 및 Id입니다.In the following example from the default web site template, several extension methods are used to configure the pipeline with support for BrowserLink, error pages, static files, ASP.NET MVC, and Identity.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseStaticFiles();

    app.UseIdentity();

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

Use 추가 하는 확장 메서드는 미들웨어 요청 파이프라인 구성 요소입니다.Each Use extension method adds a middleware component to the request pipeline. 예를 들어,는 UseMvc 추가 하는 확장 메서드는 라우팅 요청 파이프라인에 미들웨어를 구성 하 고 MVC 기본 처리기로 합니다.For instance, the UseMvc extension method adds the routing middleware to the request pipeline and configures MVC as the default handler.

사용 하는 방법에 대 한 자세한 내용은 IApplicationBuilder, 참조 미들웨어합니다.For more information about how to use IApplicationBuilder, see Middleware.

추가 서비스와 같은 IHostingEnvironmentILoggerFactory 메서드 시그니처의 지정할 수 있습니다 이러한 서비스를 수는 쿼리에서 삽입 사용 가능한 경우.Additional services, like IHostingEnvironment and ILoggerFactory may also be specified in the method signature, in which case these services will be injected if they are available.

추가 리소스Additional Resources