Azure App Service 및 ASP.NET에 대한 애플리케이션 모니터링

이제 Azure App Services에서 실행되는 ASP.NET 기반 웹 애플리케이션에서 모니터링을 사용하도록 설정하는 것이 그 어느 때보다 쉬워졌습니다. 이전에는 앱을 수동으로 계측해야 했습니다. 이제 최신 확장/에이전트가 기본적으로 App Service 이미지에 빌드됩니다. 이 문서에서는 Azure Monitor Application Insights 모니터링을 사용하도록 설정하는 과정을 안내하고 대규모 배포 프로세스를 자동화하기 위한 예비 지침을 제공합니다.

참고 항목

개발 도구>확장을 통해 Application Insights 사이트 확장을 수동으로 추가하는 기능은 사용되지 않습니다. 이 확장 설치 방법은 각 새 버전의 수동 업데이트에 따라 달랐습니다. 확장의 안정적인 최신 릴리스는 이제 App Service 이미지의 일부로 미리 설치됩니다. 파일은 d:\Program Files(x86)\SiteExtensions\ApplicationInsightsAgent에 있으며 각각의 안정적인 릴리스로 자동 업데이트됩니다. 자동 계측 지침에 따라 모니터링을 사용하도록 설정하면 사용되지 않는 확장이 자동으로 제거됩니다.

자동 계측 모니터링과 수동 SDK 기반 계측이 모두 검색되면 수동 계측 설정만 적용됩니다. 이 배열은 중복 데이터가 전송되는 것을 방지합니다. 자세한 내용은 문제 해결 섹션을 참조하세요.

참고 항목

2025년 3월 31일에 계측 키 수집에 대한 지원이 종료됩니다. 계측 키 수집은 계속 작동하지만 더 이상 기능에 대한 업데이트 또는 지원을 제공하지 않습니다. 연결 문자열로 전환하여 새로운 기능을 활용합니다.

자동 계측 모니터링 사용

지원되는 자동 계측 시나리오의 전체 목록은 지원되는 환경, 언어 및 리소스 공급자를 참조하세요.

참고 항목

APPINSIGHTS_JAVASCRIPT_ENABLEDurlCompression의 조합은 지원되지 않습니다. 자세한 내용은 문제 해결 섹션의 설명을 참조하세요.

  1. App Service의 Azure 제어판에서 Application Insights를 선택합니다. 그런 다음 사용을 선택합니다.

    사용이 선택된 Application Insights 탭을 보여 주는 스크린샷

  2. 새 리소스를 만들도록 선택하거나 이 애플리케이션에 대한 기존 Application Insights 리소스를 선택합니다.

    참고 항목

    새 리소스를 만들기 위해 확인을 선택하면 모니터링 설정 적용을 선택하라는 메시지가 표시됩니다. 계속을 선택하면 새 Application Insights 리소스가 앱 서비스에 연결됩니다. 이렇게 하면 App Service가 다시 시작됩니다.

    리소스 변경 드롭다운을 보여 주는 스크린샷

  3. 사용할 리소스를 지정한 후 Application Insights에서 애플리케이션에 대한 플랫폼별 데이터를 수집하는 방법을 선택할 수 있습니다. ASP.NET 앱 모니터링은 기본적으로 두 가지 수준의 수집을 사용하여 설정됩니다.

    새 리소스 만들기가 선택된 Application Insights 사이트 확장 페이지를 보여 주는 스크린샷

    다음 표에는 각 경로에 대해 수집되는 데이터가 요약되어 있습니다.

    데이터 ASP.NET 기본 수집 ASP.NET 권장 수집
    CPU, 메모리 및 I/O 사용량 추세를 추가합니다.
    사용량 추세를 수집하고, 가용성 결과와 트랜잭션의 상관 관계를 사용하도록 설정합니다.
    호스트 프로세스에서 처리되지 않은 예외를 수집합니다.
    샘플링을 사용하는 경우 부하 상태에서 APM 메트릭 정확도가 향상됩니다.
    요청/종속성 경계 간에 마이크로 서비스를 상호 연결합니다. 아니요(단일 인스턴스 APM 기능만 해당)
  4. 이전에 applicationinsights.config 파일을 통해 제어할 수 있었던 샘플링을 구성하려면 이제 해당 접두사 MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor를 사용하여 애플리케이션 설정을 통해 샘플링과 상호 작용할 수 있습니다.

    • 예를 들어, 초기 샘플링 비율을 변경하기 위해 MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage100 값으로 된 애플리케이션 설정을 만들 수 있습니다.

    • 샘플링을 사용하지 않도록 설정하려면 MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage100 값으로 설정합니다.

    • 지원되는 설정은 다음과 같습니다.

      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_InitialSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MinSamplingPercentage
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_EvaluationInterval
      • MicrosoftAppInsights_AdaptiveSamplingTelemetryProcessor_MaxTelemetryItemsPerSecond
    • 지원되는 적응 샘플링 원격 분석 프로세서 설정 및 정의 목록은 코드샘플링 설명서를 참조하세요.

클라이언트 쪽 모니터링 사용

클라이언트 쪽 모니터링은 ASP.NET에 대한 옵트인입니다. 클라이언트 쪽 모니터링을 사용하려면 다음을 수행합니다.

  1. 설정>구성을 선택합니다.

  2. 애플리케이션 설정에서 새 애플리케이션 설정을 만듭니다.

    • 이름: APPINSIGHTS_JAVASCRIPT_ENABLED를 입력합니다.
    • : true를 입력합니다.
  3. 설정을 저장하고 앱을 다시 시작합니다.

클라이언트 쪽 모니터링을 사용하지 않으려면 애플리케이션 설정에서 연결된 키 값 쌍을 제거하거나 값을 false로 설정합니다.

모니터링 자동화

Application Insights를 통해 원격 분석 컬렉션을 사용하도록 설정하려면 애플리케이션 설정만 설정해야 합니다.

Application Insights 설정이 있는 App Service 애플리케이션 설정을 보여 주는 스크린샷

애플리케이션 설정 정의

앱 설정 이름 정의
ApplicationInsightsAgent_EXTENSION_VERSION 런타임 모니터링을 제어하는 기본 확장입니다. ~2
XDT_MicrosoftApplicationInsights_Mode 기본 모드에서는 최적의 성능을 보장하기 위해 필수 기능만 사용하도록 설정됩니다. default 또는 recommended
InstrumentationEngine_EXTENSION_VERSION 이진 다시 쓰기 엔진 InstrumentationEngine을 켤지 여부를 제어합니다. 이 설정은 성능에 영향을 미치며 콜드 부팅/작동 시간에 영향을 미칩니다. ~1
XDT_MicrosoftApplicationInsights_BaseExtensions SQL 및 Azure 테이블 텍스트를 종속성 호출과 함께 캡처할지 여부를 제어합니다. 성능 경고: 애플리케이션 콜드 부팅 시작 시간이 영향을 받습니다. 이 설정에는 InstrumentationEngine이 필요합니다. ~1

Azure Resource Manager를 사용한 App Service 애플리케이션 설정

Azure App Service에 대한 애플리케이션 설정은 Azure Resource Manager 템플릿으로 관리 및 구성할 수 있습니다. Resource Manager 자동화를 사용하여 새 App Service 리소스를 배포하거나 기존 리소스의 설정을 수정할 때 이 방법을 사용할 수 있습니다.

App Service 리소스에 대한 애플리케이션 설정 JSON의 기본 구조:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

Application Insights에 대해 구성된 애플리케이션 설정이 포함된 Resource Manager 템플릿의 예제에서는 이 템플릿이 유용할 수 있습니다. 특히 238행에서 시작하는 섹션을 참조하세요.

기본 Application Insights 설정을 사용하여 Resource Manager 템플릿을 만들려면 Application Insights를 사용하도록 설정하여 새 웹앱을 만들려는 것처럼 프로세스를 시작합니다.

  1. 원하는 웹앱 정보로 새 App Service 리소스를 만듭니다. 모니터링 탭에서 Application Insights를 사용하도록 설정합니다.

  2. 검토 + 만들기를 선택합니다. 그런 다음 자동화용 템플릿 다운로드를 선택합니다.

    App Service 웹앱 만들기 메뉴를 보여 주는 스크린샷

    이 옵션은 모든 필수 설정이 구성된 최신 Resource Manager 템플릿을 생성합니다.

    App Service 웹앱 템플릿을 보여 주는 스크린샷.

다음 샘플에서 AppMonitoredSite의 모든 인스턴스를 사이트 이름으로 바꿉니다.

참고 항목

Windows를 사용하는 경우 ApplicationInsightsAgent_EXTENSION_VERSION을(를) ~2(으)로 설정합니다. Linux를 사용하는 경우 ApplicationInsightsAgent_EXTENSION_VERSION을(를) ~3(으)로 설정합니다.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

PowerShell을 통해 사용

PowerShell을 통해 애플리케이션 모니터링을 사용하도록 설정하려면 기본 애플리케이션 설정만 변경해야 합니다. 다음 샘플은 리소스 그룹 AppMonitoredRG에서 AppMonitoredSite라는 웹 사이트에 대한 애플리케이션 모니터링을 사용하도록 설정합니다. 012345678-abcd-ef01-2345-6789abcd 계측 키로 전송되는 데이터를 구성합니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

참고 항목

Windows를 사용하는 경우 ApplicationInsightsAgent_EXTENSION_VERSION을 ~2(으)로 설정합니다. Linux를 사용하는 경우 ApplicationInsightsAgent_EXTENSION_VERSION을 ~3(으)로 설정합니다.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

모니터링 확장/에이전트 업그레이드: .NET

버전 2.8.9 이상에서 업그레이드

버전 2.8.9에서 업그레이드는 추가 작업 없이 자동으로 수행됩니다. 새 모니터링 비트는 백그라운드에서 대상 App Service로 배달됩니다. 애플리케이션이 다시 시작될 때 선택됩니다.

실행 중인 확장의 버전을 확인하려면 https://yoursitename.scm.azurewebsites.net/ApplicationInsights로 이동합니다.

실행되는 확장의 버전을 확인하기 위한 URL 경로를 보여 주는 스크린샷

버전 1.0.0~2.6.5에서 업그레이드

버전 2.8.9부터 미리 설치된 사이트 확장이 사용됩니다. 이전 버전을 사용 중인 경우 다음 두 가지 방법 중 하나로 업데이트할 수 있습니다.

  • 포털을 통해 사용하도록 설정하여 업그레이드: App Service용 Application Insights 확장이 설치된 경우에도 마찬가지입니다. UI에는 사용 단추만 표시됩니다. 백그라운드에서 이전 프라이빗 사이트 확장이 제거됩니다.

  • PowerShell을 통해 업그레이드:

    1. 애플리케이션 설정을 설정하여 미리 설치된 사이트 확장 ApplicationInsightsAgent를 사용하도록 설정합니다. 자세한 내용은 PowerShell을 통해 사용을 참조하세요.
    2. App Service의 Application Insights 확장이라는 프라이빗 사이트 확장을 수동으로 제거합니다.

2.5.1 이전 버전에서 업그레이드를 수행한 경우 Application Insights DLL이 애플리케이션 bin 폴더에서 제거되었는지 확인합니다. 자세한 내용은 문제 해결 섹션의 단계를 참조하세요.

문제 해결

참고 항목

App Services에서 ASP.NET 런타임으로 웹앱을 만들면 단일 정적 HTML 페이지를 시작 웹 사이트로 배포합니다. 기본 템플릿으로 문제를 해결하는 것은 권장하지 않습니다. 문제를 해결하기 전에 애플리케이션을 배포합니다.

다음은 App Service에서 실행되는 ASP.NET 기반 애플리케이션의 확장/에이전트 기반 모니터링에 대한 단계별 문제 해결 가이드입니다.

  1. ApplicationInsightsAgent_EXTENSION_VERSION 앱 설정이 ~2 값으로 설정되어 있는지 확인합니다.

  2. https://yoursitename.scm.azurewebsites.net/ApplicationInsights으로 이동합니다.

    이전 링크의 결과 페이지를 보여 주는 스크린샷

    • Application Insights Extension StatusPre-Installed Site Extension, version 2.8.x.xxxx이고 실행 중인지 확인합니다.

      실행되고 있지 않으면 지침에 따라 Application Insights 모니터링을 사용하도록 설정합니다.

    • 상태 원본이 존재하고 Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json과 같이 표시되는지 확인합니다.

      유사한 값이 없으면 애플리케이션이 현재 실행되고 있지 않거나 지원되지 않는다는 의미입니다. 애플리케이션이 실행되고 있는지 확인하려면 런타임 정보가 제공될 수 있도록 애플리케이션 URL/애플리케이션 엔드포인트를 수동으로 방문해 봅니다.

    • IKeyExiststrue인지 확인합니다. 그렇지 않은 경우 계측 키 GUID와 함께 APPINSIGHTS_INSTRUMENTATIONKEYAPPLICATIONINSIGHTS_CONNECTION_STRING을 애플리케이션 설정에 추가합니다.

    • AppAlreadyInstrumented, AppContainsDiagnosticSourceAssembly, AppContainsAspNetTelemetryCorrelationAssembly에 해당하는 항목이 없는지 확인합니다.

      해당 항목이 있는 경우 애플리케이션에서 Microsoft.ApplicationInsights, System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelation 패키지를 제거합니다.

웹앱으로 배포된 기본 웹 사이트에서 자동 클라이언트 쪽 모니터링을 지원하지 않음

App Services에서 ASP.NET 런타임으로 웹앱을 만들면 단일 정적 HTML 페이지를 시작 웹 사이트로 배포합니다. 또한 정적 웹 페이지는 IIS에서 ASP.NET 관리형 웹 파트를 로드합니다. 이 페이지를 통해 코드리스 서버 쪽 모니터링을 테스트할 수 있지만 자동 클라이언트 쪽 모니터링은 지원하지 않습니다.

App Services 웹앱에서 ASP.NET에 대한 코드 없는 서버 및 클라이언트 쪽 모니터링을 테스트하려면 ASP.NET Framework 웹앱 만들기에 대한 공식 가이드를 따르는 것이 좋습니다. 그런 다음 현재 문서의 지침을 사용하여 모니터링을 사용하도록 설정합니다.

APPINSIGHTS_JAVASCRIPT_ENABLED 및 urlCompression이 지원되지 않음

콘텐츠가 인코딩된 경우 APPINSIGHTS_JAVASCRIPT_ENABLED=true를 사용하면 다음과 같은 오류가 발생할 수 있습니다.

  • 500 URL 다시 쓰기 오류입니다.
  • "HTTP 응답의 콘텐츠를 인코딩('gzip')하면 아웃바운드 다시 쓰기 규칙을 적용할 수 없다"는 메시지와 관련된 500.53 URL 다시 쓰기 모듈 오류입니다.

APPINSIGHTS_JAVASCRIPT_ENABLED 애플리케이션 설정이 true로 설정되어 있고 콘텐츠 인코딩이 동시에 존재하기 때문에 오류가 발생합니다. 이 시나리오는 아직 지원되지 않습니다. 해결 방법은 애플리케이션 설정에서 APPINSIGHTS_JAVASCRIPT_ENABLED를 제거하는 것입니다. 안타깝게도 클라이언트/브라우저 쪽 JavaScript 계측이 여전히 필요한 경우 웹 페이지에 대한 수동 SDK 참조가 필요합니다. JavaScript SDK를 사용한 수동 계측에 관한 지침을 따릅니다.

Application Insights 에이전트/확장에 대한 최신 정보는 릴리스 정보를 참조하세요.

Application Insights의 표준 메트릭과 Azure App Service 메트릭의 차이점은 무엇인가요?

Application Insights는 애플리케이션에 대한 요청에 대한 원격 분석을 수집합니다. WebApps/WebServer에서 오류가 발생했고 요청이 사용자 애플리케이션에 도달하지 못한 경우 Application Insights는 이에 대한 원격 분석을 하지 않습니다.

Application Insights에서 계산한 serverresponsetime의 기간은 Web Apps에서 관찰한 서버 응답 시간과 반드시 일치하지는 않습니다. 이 동작은 Application Insights가 요청이 실제로 사용자 애플리케이션에 도달하는 기간만 계산하기 때문입니다. 요청이 WebServer에서 멈추거나 대기 중인 경우 대기 시간은 Web Apps 메트릭에 포함되지만 Application Insights 메트릭에는 포함되지 않습니다.

애플리케이션 호스트와 수집 서비스 간의 연결 테스트

Application Insights SDK 및 에이전트는 수집 엔드포인트에 대한 REST 호출로 수집하기 위해 원격 분석을 보냅니다. PowerShell 또는 curl 명령의 원시 REST 클라이언트를 사용하여 웹 서버 또는 애플리케이션 호스트 컴퓨터에서 수집 서비스 엔드포인트로의 연결을 테스트할 수 있습니다. Azure Monitor Application Insights에서 누락된 애플리케이션 원격 분석 문제 해결을 참조하세요.

PHP 및 WordPress는 지원되지 않음

PHP 및 WordPress 사이트는 지원되지 않습니다. 현재 이 워크로드의 서버 쪽 모니터링에 대해 공식적으로 지원되는 SDK/에이전트는 없습니다. JavaScript SDK를 사용하여 웹페이지에 클라이언트 쪽 JavaScript를 추가하면 PHP 또는 WordPress 사이트에서 클라이언트 쪽 트랜잭션을 수동으로 구성할 수 있습니다.

다음 표에서는 이러한 값의 의미, 기본 원인 및 권장 수정 사항에 대한 자세한 설명을 제공합니다.

문제 값 설명 Fix
AppAlreadyInstrumented:true 이 값은 확장에서 SDK의 일부 측면이 애플리케이션에 이미 있고 백오프될 것임을 검색했음을 나타냅니다. System.Diagnostics.DiagnosticSource, Microsoft.AspNet.TelemetryCorrelation 또는 Microsoft.ApplicationInsights에 대한 참조 때문일 수 있습니다. 참조를 제거합니다. 이러한 참조 중 일부는 기본적으로 특정 Visual Studio 템플릿에서 추가됩니다. 이전 버전의 Visual Studio에서는 Microsoft.ApplicationInsights에 대한 참조를 추가할 수 있습니다.
AppAlreadyInstrumented:true 이 값은 이전 배포의 앱 폴더에 이전 DLL이 있기 때문에 발생할 수도 있습니다. 앱 폴더를 정리하여 이 DLL이 제거되도록 합니다. 로컬 앱의 bin 디렉터리와 App Service 리소스의 wwwroot 디렉터리를 둘 다 확인합니다. (App Service 웹앱의 wwwroot 디렉터리를 확인하려면 고급 도구(Kudu)>디버그 콘솔>CMD>home\site\wwwroot를 선택합니다.)
AppContainsAspNetTelemetryCorrelationAssembly: true 이 값은 확장에서 애플리케이션의 Microsoft.AspNet.TelemetryCorrelation에 대한 참조를 검색했고 백오프될 것임을 나타냅니다. 참조를 제거합니다.
AppContainsDiagnosticSourceAssembly**:true 이 값은 확장에서 애플리케이션의 System.Diagnostics.DiagnosticSource에 대한 참조를 검색했고 백오프될 것임을 나타냅니다. ASP.NET의 경우 참조를 제거합니다.
IKeyExists:false 이 값은 APPINSIGHTS_INSTRUMENTATIONKEY 앱 설정에 계측 키가 없음을 나타냅니다. 가능한 원인은 값이 실수로 제거되었거나 자동화 스크립트에서 값을 설정하는 것을 잊었을 수 있습니다. 설정이 App Service 애플리케이션 설정에 있는지 확인합니다.

2.8.44 업그레이드 후 System.IO.FileNotFoundException 발생

2.8.44 버전의 자동 계측은 Application Insights SDK를 2.20.0으로 업그레이드합니다. Application Insights SDK에는 System.Diagnostics.DiagnosticSource.dll을 통해 System.Runtime.CompilerServices.Unsafe.dll에 대한 간접 참조가 있습니다. 애플리케이션에 System.Runtime.CompilerServices.Unsafe.dll에 대한 바인딩 리디렉션이 있고 이 라이브러리가 애플리케이션 폴더에 없으면 System.IO.FileNotFoundException이 발생할 수 있습니다.

이 문제를 해결하려면 web.config 파일에서 System.Runtime.CompilerServices.Unsafe.dll에 대한 바인딩 리디렉션 항목을 제거합니다. 애플리케이션이 System.Runtime.CompilerServices.Unsafe.dll을 사용하려는 경우 다음과 같이 바인딩 리디렉션을 설정합니다.

<dependentAssembly>
	<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
	<bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
</dependentAssembly>

임시 해결 방법으로 앱 설정 ApplicationInsightsAgent_EXTENSION_VERSION2.8.37 값으로 설정할 수 있습니다. 이 설정은 이전 Application Insights 확장을 사용하도록 App Service를 트리거합니다. 임시 완화는 임시로만 사용해야 합니다.

릴리스 정보

최신 업데이트 및 버그 수정에 대해서는 릴리스 정보를 참조하세요.

다음 단계