首页 文章

应用程序洞察 - 自定义TrackRequest正在创建重复的消息

提问于
浏览
1

我希望能够为请求遥测添加自定义属性 . 我可以使用以下代码执行此操作:

public void LogRequest(IDictionary<string,string> properties) 
{
    var client  = new TelemetryClient();
    var request = new RequestTelemetry();

    foreach(var prop in properties) 
    {
        request.Properties.Add(prop );
    }
    client.TrackRequest(request);
}

此代码的工作原理是它使用我想要的所有自定义属性创建请求遥测,但应用程序洞察SDK也创建了重复的请求遥测(没有我的自定义属性) . 所以它发送自己的请求遥测和我创建的请求 .

在尝试做一些研究时我发现了这个:https://github.com/Azure/Azure-Functions/wiki/App-Insights-Early-Preview

自定义遥测您可以携带.NET App Insights SDK并创建自己的TelemetryClient . 没有任何冲突,但有一些建议:如果您不想要重复请求,请不要创建TrackRequest或使用StartOperation方法 - 我们会自动执行此操作 .

所以我的问题是,无论如何在没有sdk自动创建重复消息的情况下发送我自己的自定义请求遥测?

另外我想避免使用TrackEvent . 我需要的大部分信息已经在请求对象中,所以我更喜欢使用TrackRequest .

这是我在跟踪请求部分的应用程序洞察配置中的内容:

<TelemetryModules>
    <Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">
        <Handlers>
            <Add>System.Web.Handlers.TransferRequestHandler</Add>
            <Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add>
            <Add>System.Web.StaticFileHandler</Add>
            <Add>System.Web.Handlers.AssemblyResourceLoader</Add>
            <Add>System.Web.Optimization.BundleHandler</Add>
            <Add>System.Web.Script.Services.ScriptHandlerFactory</Add>
            <Add>System.Web.Handlers.TraceHandler</Add>
            <Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add>
            <Add>System.Web.HttpDebugHandler</Add>
        </Handlers>
    </Add>
</TelemetryModules>

1 回答

  • 1

    原因是AI SDK会自动跟踪您的请求,因此您会获得重复(您的属性是自动创建的那个) .

    正如PeterBons建议的那样,使用Telemetry Initializer可以将属性添加到自动生成的请求中 .

相关问题