Информация о приложении TrackException ExceptionTelemetry, когда у вас нет объекта исключения - PullRequest
0 голосов
/ 11 января 2019

Если у вас есть сериализованное исключение, например, с ответом HTTP Error, но без объекта исключения, есть ли у кого-нибудь пример создания нового ExceptionTelemetry (), который Application Insights будет регистрировать?

1 Ответ

0 голосов
/ 14 января 2019

Учитывая сериализованное исключение в 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);
...