ASP.NET Core 5.0 에서 HttpContext 를 방문 하 는 방법 절차

ASP.NET Core 응용 프로그램 은 IHttpContextAccessor 인터페이스 와 기본 값 으로 HttpContextAccessor 를 통 해 HttpContext 에 접근 합 니 다.서비스 내 HttpContext 에 접근 해 야 할 때 만 IHttpContextAccessor 를 사용 할 필요 가 있 습 니 다.
Razor Pages 를 통 해 HttpContext 사용 하기
Razor 페이지 PageModel HttpContext 속성 공개:

public class AboutModel : PageModel
{
  public string Message { get; set; }


  public void OnGet()
  {
    Message = HttpContext.Request.PathBase;
  }
}

Razor 보 기 를 통 해 HttpContext 사용 하기
Razor 보 기 는 보기에 있 는 RazorPage.Context 속성 을 통 해 HttpContext 를 직접 공개 합 니 다.다음 예제 에 서 는 인 트 라 넷 애플 리 케 이 션 의 현재 사용자 이름 을 Windows 인증 으로 검색 합 니 다.

@{
  var username = Context.User.Identity.Name;
  
  ...
}
컨트롤 러 를 통 해 HttpContext 사용 하기
컨트롤 러 공개 ControllerBase.HttpContext 속성:

public class HomeController : Controller
{
  public IActionResult About()
  {
    var pathBase = HttpContext.Request.PathBase;


    ...


    return View();
  }
}

미들웨어 를 통 해 HttpContext 를 사용 합 니 다.
사용자 정의 미들웨어 구성 요 소 를 사용 할 때 HttpContext 는 Invoke 나 InvokeAsync 방법 으로 전 달 됩 니 다.미들웨어 설정 후 접근 할 수 있 습 니 다.

public class MyCustomMiddleware
{
  public Task InvokeAsync(HttpContext context)
  {
    ...
  }
}
사용자 정의 구성 요 소 를 통 해 HttpContext 사용 하기
HttpContext 에 접근 할 다른 프레임 워 크 와 사용자 정의 구성 요소 에 대해 서 는 내 장 된 의존 항목 을 용기 에 주입 하여 의존 항목 을 등록 하 는 것 을 권장 합 니 다.의존 항 주입 용 기 는 임의의 클래스 에 IHttpContextAccessor 를 제공 하여 클래스 가 자신의 구조 함수 에서 의존 항 으로 설명 할 수 있 도록 합 니 다.

public void ConfigureServices(IServiceCollection services)
{
   services.AddControllersWithViews();
   services.AddHttpContextAccessor();
   services.AddTransient<IUserRepository, UserRepository>();
}
다음 예제 에서:
  • UserRepository 는 IHttpContextAccessor 에 대한 의존 도 를 밝 혔 다
  • 의존 항 주입 용기 분석 의존 체인 을 만 들 고 UserRepository 인 스 턴 스 를 만 들 때 의존 항 을 주입 합 니 다
  • 
    public class UserRepository : IUserRepository
    {
      private readonly IHttpContextAccessor _httpContextAccessor;
    
    
      public UserRepository(IHttpContextAccessor httpContextAccessor)
      {
        _httpContextAccessor = httpContextAccessor;
      }
    
    
      public void LogCurrentUser()
      {
        var username = _httpContextAccessor.HttpContext.User.Identity.Name;
        service.LogAccessRequest(username);
      }
    }
    
    
    배경 스 레 드 에서 HttpContext 에 접근
    HttpContext 는 라인 보안 형 이 아 닙 니 다.처리 요청 외 에 HttpContext 의 속성 을 읽 거나 기록 하면 NullReference Exception 이 발생 할 수 있 습 니 다.
    HttpContext 데 이 터 를 사용 하여 백그라운드 작업 을 안전하게 수행 하려 면 다음 작업 을 수행 하 십시오.
    4.567917.처리 요청 과정 에서 필요 한 데 이 터 를 복사 합 니 다복사 한 데 이 터 를 배경 작업 에 전달 합 니 다안전 하지 않 은 코드 를 피 하려 면 HttpContext 를 배경 작업 을 수행 하 는 방법 에 전달 하지 마 십시오.필요 한 데 이 터 를 전달 하 는 것 입 니 다.다음 예제 에서 SendEmail Core 를 호출 하여 이메일 을 보 내기 시작 합 니 다.HttpContext 대신 correlationId 를 SendEmail Core 에 전달 합 니 다.코드 실행 은 SendEmailCore 가 완 료 될 때 까지 기다 리 지 않 습 니 다.
    
    public class EmailController : Controller
    {
      public IActionResult SendEmail(string email)
      {
        var correlationId = HttpContext.Request.Headers["x-correlation-id"].ToString();
    
    
        _ = SendEmailCore(correlationId);
    
    
        return View();
      }
    
    
      private async Task SendEmailCore(string correlationId)
      {
        ...
      }
    }
    
    ASP.NET Core 5.0 에서 HttpContext 를 방문 하 는 방법 과 절차 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 ASP.NET Core 가 HttpContext 를 방문 하 는 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기