我有一个 .NET core API,它执行与其他 API 的 HTTP 连接。我可以在 Application Insights 中的“依赖项事件类型”下可视化传出 HTTP 请求,但它只有基本信息。我正在研究如何添加有关传出 HTTP 调用的更多信息(例如 HTTP header )。
我调查过https://learn.microsoft.com/en-us/azure/azure-monitor/app/api-custom-events-metrics#trackdependency但我没有找到任何具体的方法来做到这一点。
最佳答案
正如前面所说,IvanYang 提出的解决方案是使用接收的请求而不是依赖请求。 我为此构建了这个 ITelemetryInstance:
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);
}
}
这将记录发送到依赖项的所有 header 以及收到的响应
关于azure - 如何在 Application Insights 中扩展对传出 http 请求的依赖项跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53952010/