다음을 통해 공유


최소 API 앱의 미들웨어

참고 항목

이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

Warning

이 버전의 ASP.NET Core는 더 이상 지원되지 않습니다. 자세한 내용은 .NET 및 .NET Core 지원 정책을 참조 하세요. 현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

Important

이 정보는 상업적으로 출시되기 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적, 또는 묵시적인 보증을 하지 않습니다.

현재 릴리스는 이 문서의 .NET 8 버전을 참조 하세요.

WebApplication 는 특정 조건에 따라 다음 미들웨어 Minimal API applications 를 자동으로 추가합니다.

  • HostingEnvironment"Development"일 때 UseDeveloperExceptionPage가 먼저 추가됩니다.
  • 사용자 코드가 아직 UseRouting를 호출하지 않은 경우 및 구성된 엔드포인트가 있는 경우(예: app.MapGet), UseRouting가 두 번째로 추가됩니다.
  • UseEndpoints는 엔드포인트가 구성된 경우 미들웨어 파이프라인의 끝에 추가됩니다.
  • UseAuthentication은 사용자 코드가 아직 호출 UseAuthentication 되지 않은 경우와 서비스 공급자에서 검색할 수 있는 경우 IAuthenticationSchemeProvider 즉시 UseRouting 추가됩니다. IAuthenticationSchemeProviderAddAuthentication를 사용할 때 기본적으로 추가되고 IServiceProviderIsService를 사용하여 서비스가 검색됩니다.
  • UseAuthorization 는 사용자 코드가 아직 호출 UseAuthorization 되지 않았고 서비스 공급자에서 검색할 수 있는 경우 IAuthorizationHandlerProvider 다음에 추가됩니다. IAuthorizationHandlerProviderAddAuthorization를 사용할 때 기본적으로 추가되고 IServiceProviderIsService를 사용하여 서비스가 검색됩니다.
  • 사용자 구성 미들웨어 및 엔드포인트는 UseRoutingUseEndpoints 사이에 추가됩니다.

다음 코드는 앱에 추가되는 자동 미들웨어가 생성하는 것입니다.

if (isDevelopment)
{
    app.UseDeveloperExceptionPage();
}

app.UseRouting();

if (isAuthenticationConfigured)
{
    app.UseAuthentication();
}

if (isAuthorizationConfigured)
{
    app.UseAuthorization();
}

// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints

app.UseEndpoints(e => {});

경우에 따라 앱에 대한 기본 미들웨어 구성이 올바르지 않으며 수정이 필요합니다. 예를 들어, UseCorsUseAuthenticationUseAuthorization 전에 호출되어야 합니다. 앱은 호출 UseAuthentication 해야 하며 UseAuthorization 호출되는 경우 UseCors :

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

경로 일치가 발생하기 전에 미들웨어를 실행해야 하는 경우, UseRouting를 호출해야 하며 UseRouting에 대한 호출 전에 미들웨어를 배치해야 합니다. UseEndpoints 는 앞에서 설명한 대로 자동으로 추가되므로 이 경우에는 필요하지 않습니다.

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

터미널 미들웨어를 추가하는 경우:

  • 미들웨어는 UseEndpoints 다음에 추가해야 합니다.
  • 터미널 미들웨어를 올바른 위치에 배치할 수 있도록 앱은 UseRoutingUseEndpoints를 호출해야 합니다.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

터미널 미들웨어는 요청을 처리하는 엔드포인트가 없는 경우 실행되는 미들웨어입니다.

WebApplication 는 특정 조건에 따라 다음 미들웨어 Minimal API applications 를 자동으로 추가합니다.

  • HostingEnvironment"Development"일 때 UseDeveloperExceptionPage가 먼저 추가됩니다.
  • 사용자 코드가 아직 UseRouting를 호출하지 않은 경우 및 구성된 엔드포인트가 있는 경우(예: app.MapGet), UseRouting가 두 번째로 추가됩니다.
  • UseEndpoints는 엔드포인트가 구성된 경우 미들웨어 파이프라인의 끝에 추가됩니다.
  • UseAuthentication은 사용자 코드가 아직 호출 UseAuthentication 되지 않은 경우와 서비스 공급자에서 검색할 수 있는 경우 IAuthenticationSchemeProvider 즉시 UseRouting 추가됩니다. IAuthenticationSchemeProviderAddAuthentication를 사용할 때 기본적으로 추가되고 IServiceProviderIsService를 사용하여 서비스가 검색됩니다.
  • UseAuthorization 는 사용자 코드가 아직 호출 UseAuthorization 되지 않았고 서비스 공급자에서 검색할 수 있는 경우 IAuthorizationHandlerProvider 다음에 추가됩니다. IAuthorizationHandlerProviderAddAuthorization를 사용할 때 기본적으로 추가되고 IServiceProviderIsService를 사용하여 서비스가 검색됩니다.
  • 사용자 구성 미들웨어 및 엔드포인트는 UseRoutingUseEndpoints 사이에 추가됩니다.

다음 코드는 앱에 추가되는 자동 미들웨어가 생성하는 것입니다.

if (isDevelopment)
{
    app.UseDeveloperExceptionPage();
}

app.UseRouting();

if (isAuthenticationConfigured)
{
    app.UseAuthentication();
}

if (isAuthorizationConfigured)
{
    app.UseAuthorization();
}

// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints

app.UseEndpoints(e => {});

경우에 따라 앱에 대한 기본 미들웨어 구성이 올바르지 않으며 수정이 필요합니다. 예를 들어, UseCorsUseAuthenticationUseAuthorization 전에 호출되어야 합니다. 앱은 호출 UseAuthentication 해야 하며 UseAuthorization 호출되는 경우 UseCors :

app.UseCors();
app.UseAuthentication();
app.UseAuthorization();

경로 일치가 발생하기 전에 미들웨어를 실행해야 하는 경우, UseRouting를 호출해야 하며 UseRouting에 대한 호출 전에 미들웨어를 배치해야 합니다. UseEndpoints 는 앞에서 설명한 대로 자동으로 추가되므로 이 경우에는 필요하지 않습니다.

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

터미널 미들웨어를 추가하는 경우:

  • 미들웨어는 UseEndpoints 다음에 추가해야 합니다.
  • 터미널 미들웨어를 올바른 위치에 배치할 수 있도록 앱은 UseRoutingUseEndpoints를 호출해야 합니다.
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

터미널 미들웨어는 요청을 처리하는 엔드포인트가 없는 경우 실행되는 미들웨어입니다.

최소 API의 위조 방지 미들웨어에 대한 자세한 내용은 ASP.NET Core에서 XSRF/CSRF(교차 사이트 요청 위조) 공격 방지를 참조 하세요.

미들웨어에 대한 자세한 내용은 ASP.NET Core 미들웨어 및 애플리케이션에 추가할 수 있는 기본 제공 미들웨어 목록을 참조하세요.

최소 API에 대한 자세한 내용은 다음을 참조하세요 Minimal APIs overview.