IRequestCultureFeature

  • 3 minutes to read

ASP.NET Core에서 HttpContext.Features.Get<IRequestCultureFeature>() 사용 예제

다음은 ASP.NET Core에서 HttpContext.Features.Get<IRequestCultureFeature>()를 사용하여 현재 요청에 대한 문화권 정보를 가져오는 간단한 데모 예제입니다. 이 예제에서는 요청의 문화권을 기반으로 환영 메시지를 표시합니다.

1. ASP.NET Core 웹 애플리케이션 설정

먼저, 새로운 ASP.NET Core 웹 애플리케이션을 생성합니다. 이 예제에서는 Razor Pages를 사용합니다.

dotnet new webapp -n CultureDemo
cd CultureDemo

2. Startup.cs 설정

Startup.cs 파일을 열고, RequestLocalization 미들웨어를 설정하여 애플리케이션이 다양한 문화권을 지원하도록 합니다.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Globalization;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

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

        app.UseRouting();

        // RequestLocalization 미들웨어 설정
        var supportedCultures = new[] { "en-US", "fr-FR", "es-ES", "ko-KR" };
        var localizationOptions = new RequestLocalizationOptions()
            .SetDefaultCulture(supportedCultures[0])
            .AddSupportedCultures(supportedCultures)
            .AddSupportedUICultures(supportedCultures);

        app.UseRequestLocalization(localizationOptions);

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }
}

3. Razor 페이지에서 IRequestCultureFeature 사용

이제 Razor 페이지에서 HttpContext.Features.Get<IRequestCultureFeature>()를 사용하여 현재 요청의 문화권 정보를 가져옵니다.

Pages/Index.cshtml.cs 파일을 다음과 같이 수정합니다:

using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;

public class IndexModel : PageModel
{
    public string WelcomeMessage { get; private set; }

    public void OnGet()
    {
        // 현재 요청의 문화권 정보 가져오기
        var requestCultureFeature = HttpContext.Features.Get<IRequestCultureFeature>();
        var requestCulture = requestCultureFeature?.RequestCulture;

        // 요청된 문화권에 따른 환영 메시지 설정
        WelcomeMessage = requestCulture?.Culture.Name switch
        {
            "fr-FR" => "Bienvenue!",
            "es-ES" => "¡Bienvenido!",
            "ko-KR" => "환영합니다!",
            _ => "Welcome!"
        };
    }
}

Pages/Index.cshtml 파일을 다음과 같이 수정하여 환영 메시지를 표시합니다:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">@Model.WelcomeMessage</h1>
    <p>Select the desired culture by using the URL query parameter <strong>?culture=fr-FR</strong> or <strong>?culture=ko-KR</strong>.</p>
</div>

4. 애플리케이션 실행

이제 애플리케이션을 실행하고, 브라우저에서 https://localhost:5001/?culture=fr-FR과 같은 URL로 접속하여 페이지를 확인합니다.

예를 들어:

  • https://localhost:5001/?culture=fr-FR는 "Bienvenue!"라는 환영 메시지를 표시합니다.
  • https://localhost:5001/?culture=es-ES는 "¡Bienvenido!"라는 환영 메시지를 표시합니다.
  • https://localhost:5001/?culture=ko-KR는 "환영합니다!"라는 환영 메시지를 표시합니다.

5. 결론

이 예제는 HttpContext.Features.Get<IRequestCultureFeature>()를 사용하여 현재 요청의 문화권 정보를 가져오고, 이를 기반으로 사용자에게 맞춤화된 메시지를 제공하는 방법을 보여줍니다. 이를 통해 ASP.NET Core 애플리케이션에서 다국어 지원을 효과적으로 구현할 수 있습니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com