Информация о приложении TrackException ExceptionTelemetry, когда у вас нет объекта исключения
Если у вас есть сериализованное исключение, например, с ответом HTTP Error, но без объекта исключения, есть ли у кого-нибудь пример создания нового ExceptionTelemetry(), который Application Insights будет регистрировать?
1 ответ
Учитывая сериализованное исключение в JSON exceptionBody, я получил Application Insights, чтобы добавить детали с кодом ниже. Тем не менее, я не знаю, что нужно поместить в id или externalId, или как легко заполнить список StackFrame, или если передача стека в виде строки означает, что вы не передаете список StackFrame
var responseAsJObject = JObject.Parse(exceptionBody);
var properties = new Dictionary<string, string>();
foreach (var pair in responseAsJObject)
{
properties.Add(pair.Key, pair.Value.ToString());
}
var measurements = new Dictionary<string, double>();
var hasFullStack = properties.TryGetValue("StackTrace", out var stack);
var edi = new ExceptionDetailsInfo
(
10000,
10000,
properties["ExceptionType"],
$"{properties["Message"]} {url}",
hasFullStack,
stack ?? string.Empty,
new List<StackFrame>()
);
var exceptionTelemetry = new ExceptionTelemetry
(
new List<ExceptionDetailsInfo>{edi},
SeverityLevel.Error,
$"HTTP Error {statusCode}",
properties,
measurements
);
telemetryClient.TrackException(exceptionTelemetry);