ASP.NET Core에서 HttpContext 액세스: 가이드
ASP.NET Core는 편리한 HttpContext.Current
속성을 제거하여 이전 버전과 다릅니다. 이 문서에서는 ASP.NET Core 애플리케이션 내에서 현재 HTTP 컨텍스트에 액세스하기 위한 효과적인 전략을 간략하게 설명합니다.
아키텍처 고려 사항 및 리팩토링
이전 ASP.NET 버전에서 마이그레이션하려면 코드 재구성이 필요한 경우가 많습니다. ASP.NET Core의 모범 사례를 유지하려면 별도의 클래스 라이브러리에서 HttpContext
에 직접 액세스하는 것을 재고해야 합니다.
컨트롤러 내에서 HttpContext 활용
컨트롤러는 HttpContext
속성
<code class="language-csharp">public class HomeController : Controller { public IActionResult Index() { MyMethod(HttpContext); // ... other controller logic ... } public void MyMethod(Microsoft.AspNetCore.Http.HttpContext context) { string host = $"{context.Request.Scheme}://{context.Request.Host}"; // ... process HTTP context data ... } }</code>
미들웨어에서 HttpContext에 액세스
사용자 정의 미들웨어는 HttpContext
메소드 내에서 Invoke
매개변수를 활용합니다.
<code class="language-csharp">public async Task InvokeAsync(HttpContext context) { // Access and manipulate the HttpContext here... await _next(context); }</code>
IHttpContextAccessor 활용
종속성 주입을 통해 관리되는 클래스의 경우 IHttpContextAccessor
인터페이스가 다음과 같은 솔루션을 제공합니다.
<code class="language-csharp">public class MyService { private readonly IHttpContextAccessor _httpContextAccessor; public MyService(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void MyMethod() { var context = _httpContextAccessor.HttpContext; // ... use the HttpContext ... } }</code>
IHttpContextAccessor
:ConfigureServices
내의 Startup.cs
메소드에
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); // ... other service registrations ... }</code>
이러한 방법은 ASP.NET Core의 HttpContext.Current
에 대한 강력한 대안을 제공하여 HTTP 컨텍스트 정보에 대한 효율적이고 규정을 준수하는 액세스를 보장합니다.
위 내용은 HttpContext.Current를 제거한 후 ASP.NET Core에서 HttpContext에 어떻게 액세스합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!