.net core Azure功能和应用程序遥测

.net core Azure功能和应用程序遥测,.net-core,azure-functions,azure-application-insights,telemetry,.net Core,Azure Functions,Azure Application Insights,Telemetry,我正试图从HttpTrigger Azure Function v3增强AppInsights中的RequestTelemetry 函数是用DI和启动类初始化的 [程序集:函数启动(类型(启动))] 命名空间Hager.Example.FunctionApp.FunctionApp { 公共类启动:函数启动 { 公共覆盖无效配置(IFunctionsHostBuilder) { //无需重新安装服务 } } } 以及我的职能 公共类函数1 { 专用只读ILogger\u记录器; 公共功能1(I

我正试图从HttpTrigger Azure Function v3增强AppInsights中的RequestTelemetry

函数是用DI和启动类初始化的

[程序集:函数启动(类型(启动))]
命名空间Hager.Example.FunctionApp.FunctionApp
{
公共类启动:函数启动
{
公共覆盖无效配置(IFunctionsHostBuilder)
{
//无需重新安装服务
}
}
}
以及我的职能

公共类函数1
{
专用只读ILogger\u记录器;
公共功能1(ILogger记录器)
{
_记录器=记录器;
}
[函数名(“HttpTriggered”)]
公开结果运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequestMessage请求
{
使用var loggerScope=_logger.BeginScope(“{InScope1}{InScope2}{InScope3}”、Guid.NewGuid()、Guid.NewGuid()、Guid.NewGuid());
_logger.LogInformation(“已开始执行”);
_logger.LogWarning(“具有自定义属性:{CustomProperty}.”,Guid.NewGuid());
Activity.Current?.AddTag(“TagStart”,Guid.NewGuid());
如果(Activity.Current==null)
{
//总是空的
_logger.LogError(“无ActivityCurrent{Activity}.”,Activity.Current);
_logger.LogError(“ActivityCurrent标记{Activity}.”,Activity.Current?标记);
}

//Activity.Current.AddTag(“Tag2”,Guid.NewGuid());//更新:

添加了Op的解决方案:通过使用
request.HttpContext?.Features.Get()
,它运行良好


请卸载2个
Application Insights软件包
Microsoft.ApplicationInsights
Microsoft.ApplicationInsights.AspNetCore

默认情况下,Application Insights包不收集活动标记。因此这应该是原因

我在没有安装上述2个
Application Insights软件包的情况下测试了你的azure功能,它运行良好。以下是测试结果的屏幕截图:

在此处添加my local.settings.json供您参考,代码与您的相同:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "xxxx",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "APPINSIGHTS_INSTRUMENTATIONKEY": "xxx"
  }
}

如果这两个包是必需的,也许你可以尝试添加一个自定义的
ITelemetryInitializer
,方法如下(顺便说一句,我没有测试它)。

谢谢你的回答,但它对我不起作用…我不明白…可能是框架版本的不同…我最后使用了
request.HttpContext?.Features.Get()
,它成功了fine@JTE,可能是。我在答案中添加了您的解决方案。如果有帮助,您可以接受它作为答案吗?谢谢。如果您想找出根本原因,我们可以通过删除个人信息通过github共享代码,然后我可以继续处理。