首页 > 解决方案 > 在 Application Insights 指标 (VB.NET) 中为每个请求添加自定义属性

问题描述

我正在尝试将自定义属性添加到 Application Insights 到每个请求。我正在尝试使用 VB.NET 代码实现与本文所述相同的事情(在 Application Insights 指标中为每个请求添加自定义属性)。

我将建议的解决方案 C# 代码转换为 VB.NET,如下所示:

public class CustomTelemetry : ITelemetryInitializer
{
    public void Initialize(ITelemetry telemetry)
    {
        var requestTelemetry = telemetry as RequestTelemetry;
        if (requestTelemetry == null) return;
        requestTelemetry.Properties.Add("LoggedInUserName", "DummyUser");

    }
}

TelemetryConfiguration.Active.TelemetryInitializers.Add(new CustomTelemetry());

Imports Microsoft.ApplicationInsights.Channel
Imports Microsoft.ApplicationInsights.DataContracts
Imports Microsoft.ApplicationInsights.Extensibility

Public Class CustomTelemetry
    Inherits ITelemetryInitializer

    Public Sub Initialize(ByVal telemetry As ITelemetry)
        Dim requestTelemetry = TryCast(telemetry, RequestTelemetry)
        If requestTelemetry Is Nothing Then Return
        requestTelemetry.Properties.Add("TEST", "TESTERRRRRR")
    End Sub

End Class

TelemetryConfiguration.Active.TelemetryInitializers.Add(New CustomTelemetry())

然而,这给了我一个关于Inherits ITelemetryInitializer的错误

类只能从其他类继承。

我也尝试使用“实现”而不是继承,但仍然没有在页面访问时将自定义属性发送给 AI。

Public Class CustomTelemetry
    Implements ITelemetryInitializer

    Public Sub Initialize(ByVal telemetry As ITelemetry)
        Dim requestTelemetry = TryCast(telemetry, RequestTelemetry)
        If requestTelemetry Is Nothing Then Return
        requestTelemetry.Properties.Add("TEST", "TESTERRRRRR")
    End Sub

    Private Sub ITelemetryInitializer_Initialize(telemetry As ITelemetry) Implements ITelemetryInitializer.Initialize
        Throw New NotImplementedException()
    End Sub
End Class

我想知道我在这里缺少什么?

谢谢

标签: asp.netvb.netazure-application-insightsc#-to-vb.net

解决方案


我设法让它按如下方式工作:

Imports Microsoft.ApplicationInsights.Channel
Imports Microsoft.ApplicationInsights.DataContracts
Imports Microsoft.ApplicationInsights.Extensibility

Public Class CustomTelemetry
    Implements ITelemetryInitializer

    Private Sub ITelemetryInitializer_Initialize(telemetry As ITelemetry) Implements ITelemetryInitializer.Initialize
        Dim requestTelemetry = CType(telemetry, RequestTelemetry)
        If (requestTelemetry Is Nothing) Then
            Return
        End If

        requestTelemetry.Properties.Add("TEST", "TESTERRRRRR")
    End Sub
End Class

推荐阅读