【问题标题】:why cannot get outgoing response from application insights dependency telemetry?为什么无法从应用程序洞察依赖遥测中获得传出响应?
【发布时间】:2022-01-17 13:26:48
【问题描述】:

我使用以下代码从我的 Asp.Net Core 服务中的遥测初始化程序获取传出请求/响应:

    public void Initialize(ITelemetry telemetry)
    {
        if (telemetry is DependencyTelemetry)
        {
            var dependencyTelemetry = telemetry as DependencyTelemetry;

            if (dependencyTelemetry.TryGetOperationDetail("HttpRequest", out var request))
            {
                var httpRequest = request as HttpRequestMessage;
            }

            if (dependencyTelemetry.TryGetOperationDetail("HttpResponse", out var response))
            {
                var httpResponse = response as HttpResponseMessage;
            }
        }
    }

我可以使用上面的代码成功获取请求,但是 TryGetOperationDetail 的响应始终为空。我的代码有什么问题吗?

【问题讨论】:

    标签: asp.net-core azure-application-insights


    【解决方案1】:

    对我来说,这段代码记录了所有发送到依赖项的标头,并且响应已被跟踪。

    public void Initialize(ITelemetry telemetry)
        {
            var dependecyTelemetry = telemetry as DependencyTelemetry;
            if (dependecyTelemetry == null) return;
    
            if (dependecyTelemetry.TryGetOperationDetail("HttpRequest", out object request)
                && request is HttpRequestMessage httpRequest)
            {
                foreach (var item in httpRequest.Headers)
                {
                    if (!dependecyTelemetry.Properties.ContainsKey(item.Key))
                        dependecyTelemetry.Properties.Add(item.Key, string.Join(Environment.NewLine, item.Value));
                }
            }
            if (dependecyTelemetry.TryGetOperationDetail("HttpResponse", out object response)
                && response is HttpResponseMessage httpResponse)
            {
                var responseBody = httpResponse.Content.ReadAsStringAsync().GetAwaiter().GetResult();
                if (!string.IsNullOrEmpty(responseBody))
                    dependecyTelemetry.Properties.Add("ResponseBody", responseBody);
            }
        }
    

    有关遥测的进一步参考,请参阅site

    【讨论】:

    • 您的代码对我有用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2020-11-17
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多