IRequestCultureFeature
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 애플리케이션에서 다국어 지원을 효과적으로 구현할 수 있습니다.
							추천 자료: ASP.NET Core 인증 및 권한 부여
						
						
							추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!