다음을 통해 공유


ASP.NET Core Blazor 앱의 IHttpContextAccessor/HttpContext

메모

이 문서의 최신 버전은 아닙니다. 현재 릴리스를 보려면 이 문서의 .NET 9 버전을 참조하십시오.

중요하다

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

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

IHttpContextAccessor는 일반적으로 유효한 HttpContext이 항상 사용할 수 있는 것은 아니기 때문에 대화형 렌더링에서는 피해야 합니다.

IHttpContextAccessor 서버에서 정적으로 렌더링되는 구성 요소에 사용할 수 있습니다. 그러나 가능하면 피하는 것이 좋습니다.

HttpContext 헤더 또는 App 구성 요소(Components/App.razor)의 다른 속성 검사 및 수정과 같은 일반적인 작업을 위해 정적으로 렌더링된 루트 구성 요소에서만 연계 매개 변수로 사용할 수 있습니다. 이 값은 대화형 렌더링에 항상 null.

[CascadingParameter]
public HttpContext? HttpContext { get; set; }

대화형 렌더링 중에는 HttpContext 인스턴스가 존재하지 않을 수도 있습니다. 대화형 구성 요소에서 HttpContext 필요한 시나리오의 경우 서버에서 영구 구성 요소 상태 사용하여 컨텍스트 데이터를 흐르는 것이 좋습니다.

고급 에지 사례† 추가 컨텍스트는 다음 문서의 설명을 참조하세요.

†이 문서의 일반적인 지침을 따르는 한 Blazor 앱을 빌드하고 유지 관리하는 개발자는 고급 개념을 탐구할 필요가 없습니다.

서버 쪽 Blazor 앱의 Razor 구성 요소에서 직접 또는 간접적으로 IHttpContextAccessor/HttpContext 사용하지 마세요. Blazor 앱은 ASP.NET Core 파이프라인 컨텍스트 외부에서 실행됩니다. HttpContextIHttpContextAccessor내에서 가능하다고 보장되지 않으며, HttpContext가 Blazor 앱을 시작한 컨텍스트를 포함하도록 보장되지 않습니다.

Blazor 앱에 요청 상태를 전달하는 권장 방법은 앱의 초기 렌더링 중에 루트 구성 요소 매개 변수를 사용하는 것입니다. 또는 앱에서 사용할 루트 구성 요소의 초기화 수명 주기 이벤트에서 범위가 지정된 서비스로 데이터를 복사할 수 있습니다. 자세한 내용은 ASP.NET Core 서버 쪽 및추가 보안 시나리오를 Blazor Web App 참조하세요.

서버 쪽 Blazor 보안의 중요한 측면은 Blazor 회로가 설정된 후 특정 시점에 지정된 회로에 연결된 사용자가 업데이트될 수 있지만 IHttpContextAccessor업데이트되지 않는다는 것입니다. 사용자 지정 서비스를 사용하여 이 상황을 해결하는 방법에 대한 자세한 내용은 ASP.NET Core 서버 쪽 및추가 보안 시나리오를 Blazor Web App 참조하세요.

ASP.NET Core SignalR의 IHttpContextAccessorHttpContext에 대한 지침은 ASP.NET Core SignalR의 IHttpContextAccessor/HttpContext을 참조하세요.