IActionContextAccessor 진단 ActionContextAccessor ID ASPDEPR006로 사용되지 않는 것으로 표시되었습니다. 엔드포인트 라우팅 IActionContextAccessor 이 도입되면서 개발자가 작업 설명자 및 메타데이터 정보에 직접 HttpContext.GetEndpoint()액세스할 수 있으므로 더 이상 필요하지 않습니다.
도입된 버전
.NET 10 미리 보기 7
이전 동작
이전에는 현재ActionContext에 액세스하는 데 사용할 IActionContextAccessor 수 있습니다.
public class MyService
{
private readonly IActionContextAccessor _actionContextAccessor;
public MyService(IActionContextAccessor actionContextAccessor)
{
_actionContextAccessor = actionContextAccessor;
}
public void DoSomething()
{
var actionContext = _actionContextAccessor.ActionContext;
var actionDescriptor = actionContext?.ActionDescriptor;
// Use action descriptor metadata.
}
}
새 동작
.NET 10부터 진단 IDASPDEPR006가 있는 컴파일러 경고를 사용하고 IActionContextAccessorActionContextAccessor 생성합니다.
경고 ASPDEPR006: ActionContextAccessor는 사용되지 않으며 이후 버전에서 제거됩니다. 자세한 내용은 https://aka.ms/aspnet/deprecate/006을 참조하세요.
파괴적 변경 유형
이 변경 사항은 소스 호환성에 영향을 줄 수 있습니다.
변경 이유
ASP.NET Core IActionContextAccessor 에서 엔드포인트 라우팅이 도입되면 더 이상 필요하지 않습니다. 엔드포인트 라우팅 인프라는 엔드포인트 라우팅을 향한 ASP.NET Core의 아키텍처 발전에 맞춰 엔드포인트 메타데이터 HttpContext.GetEndpoint()에 더 명확하고 직접적인 액세스를 제공합니다.
권장 작업
다음으로 IActionContextAccessor 마이그레이션하고 다음을 IHttpContextAccessor 사용합니다 HttpContext.GetEndpoint().
전에:
public class MyService
{
private readonly IActionContextAccessor _actionContextAccessor;
public MyService(IActionContextAccessor actionContextAccessor)
{
_actionContextAccessor = actionContextAccessor;
}
public void DoSomething()
{
var actionContext = _actionContextAccessor.ActionContext;
var actionDescriptor = actionContext?.ActionDescriptor;
// Use action descriptor metadata
}
}
이후:
public class MyService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public MyService(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void DoSomething()
{
var httpContext = _httpContextAccessor.HttpContext;
var endpoint = httpContext?.GetEndpoint();
var actionDescriptor = endpoint?.Metadata.GetMetadata<ActionDescriptor>();
// Use action descriptor metadata.
}
}
영향을 받는 API
.NET