문제
WebApi
, HttpClient
, SqlCommand
, SqlDataReader
, NpgsqlCommand
또는 로그 리소스에 대한 비동기 트랜잭션이 표시되지 않습니다. 이 문제는 일반적으로 .NET 프레임워크 4.0 이하에서 뉴렐릭의 .NET 에이전트 로 생성된 후 .NET 프레임워크 4.5 이상으로 마이그레이션된 앱에서 발생합니다.
해결책
파이프라인에 대한 appSetting 업그레이드
다음을 사용하는 경우 특정 appSetting
또는 system.web
설정이 필요합니다.
- WebApi1 또는 WebApi2
HttpClient
,SqlCommand
,SqlDataReader
또는의 비동기 메서드NpgsqlCommand
- 비동기 관련 사용자 지정 트랜잭션 또는 사용자 지정 계측
- New Relic .NET 에이전트 버전 5.11.53.0 이상
- 앱의 대상으로 .NET Framework 4.5 이상
이러한 조건이 적용되는 경우 앱이 .NET 4.5에 도입된 업그레이드된 요청 처리 파이프라인을 사용하는지 확인해야 합니다.
업그레이드된 파이프라인을 사용하려면 web.config
에 다음 설정 중 하나가 포함되어 있는지 확인하세요. 두 설정 모두 표시되지 않으면 다음 중 하나를 추가합니다.
권장 사항: 새 파이프라인과의 호환성 확인
선택 사항: 런타임 시 비동기 코드에 대한 추가 검사를 수행하도록 .NET Framework에 지시할 수 있습니다. 이러한 검사는 레거시 ASP 파이프라인에 의해 마스킹될 수 있는 비동기 코드의 일반적인 문제를 포착합니다.
앱이 문제 없이 통과하면 앱이 새 파이프라인을 올바르게 처리한다고 확신할 수 있습니다. 자세한 내용은 Microsoft의 구성 설명서 를 참조하십시오.
추가 검사를 시행하려면 web.config
에 다음을 추가하세요.
<configuration> <appSettings> <add key="aspnet:AllowAsyncDuringSyncStages" value="false" /> </appSettings><configuration>
원인
레거시 통합 파이프라인이 있는 경우 비동기 계측이 비활성화됩니다. .NET 4.5 이전에는 통합 파이프라인으로 인해 교착 상태가 발생할 수 있었습니다. 이 .NET Framework 버그에 대한 자세한 내용은 다음을 참조하세요.