Activity.Current 在带有 BlobTrigger 的 Azure 函数中为空

Activity.Current is null in Azure function with BlobTrigger

我有一个使用 BlobTrigger 绑定并用 C# 编写的 Azure 函数 (V3)。

为了在 Application Insights RequestTelemetry 中为其添加自定义属性,使用

        Activity.Current?.AddTag("TraceId", traceId);

我需要根据 的建议访问 Activity.Current。但是,由于 Activity.Current is NULL.

,它不起作用

我的包配置如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Azure.Storage.Blobs" Version="12.9.0" />
    <PackageReference Include="Microsoft.ApplicationInsights" Version="2.14.0" />
    <PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Storage" Version="5.0.0-beta.2" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Logging.ApplicationInsights" Version="3.0.14" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.8" />
    <PackageReference Include="SixLabors.ImageSharp" Version="1.0.3" />
    <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="5.0.1" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

我的函数如下所示:

        [FunctionName("Create-Thumbnail")]
        public async Task CreateThumbnail([BlobTrigger("input/{name}",  Source = BlobTriggerSource.EventGrid, Connection = "AzureWebJobsStorage")] Stream image,
            IDictionary<string,string> metadata,
            string name,
            ILogger log,
            ExecutionContext context)
        {         
            Activity.Current?.AddTag("TraceId", traceId);
        }

我研究了一整天,但没有找到任何解决方案。有谁知道可能是什么问题?

目前它可以在 HTTP 触发器函数中运行,这些函数不再出现在应用程序洞察中的请求的自定义属性中。参考 here

相同的 Activity.Current 值是 github Azure Function host & Application Insights

中可用的空问题

Application Insights .NET SDK 使用 DiagnosticSource (DiagnosticSourceUsersGuide) and Activity (ActivityUserGuide) 个步骤来收集和关联遥测数据。

请在 Functions 存储库中打开一个问题 link here

多亏了这个 GitHub issue,我在将 System.Diagnostics.DiagnosticSource 降级到版本 4.6

后设法让它工作
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="4.6.0" />