Ошибка отслеживания значений показателей application insights?

#c# #azure #azure-application-insights

#c# #azure #azure-application-insights

Вопрос:

Я хочу отслеживать показатели с помощью nameList и ValueList, но при запуске модульных тестов отображается следующая ошибка:

$exception {Система.Исключение ArgumentException: не удается обработать указанное значение. Ожидалось числовое значение, но указанное metricValue имеет тип Microsoft.ApplicationInsights.Показатель. Вы указали правильную конфигурацию показателя?

Вот мой код:

 private void CreateMetric(String metricName, double Amount, List<Property> additionalProperties)
    {
        List<String> metrycsNameList = new List<String>();
        List<String> metrycsValueList = new List<String>();
        try
        {
           additionalProperties.ForEach(property => metrycsValueList.Add(property.Value));
           additionalProperties.ForEach(property => metrycsNameList.Add(property.Name));
           Metric metric = _client.GetMetric(new MetricIdentifier("MetricNamespace", metricName, metrycsNameList));

            AddMetricValues(metric, metrycsValueList);
        }
        catch (Exception ex)
        {
            throw new CustomMetricException("CustomMetricException", "Error adding a Custom Metric", ex.StackTrace);
        }

    }

// Checking dimension of the list (up to 10) and adding metrics.
    private void AddMetricValues(Metric metric, List<String> metrycsValueList)
    {
        int numberOfElements = metrycsValueList.Count;

        switch (numberOfElements)
        {
            case 1:
                metric.TrackValue(metric, metrycsValueList[0]);
                break;
            case 2:
                metric.TrackValue(metric, metrycsValueList[0], metrycsValueList[1]);
                break;
            case 3:
                metric.TrackValue(metric, metrycsValueList[0], metrycsValueList[1], metrycsValueList[2]);
                break;
            ...
     }
  

И вот как я вызываю метод со списками:

 public void AddCustomMetricTestTupla()
{
    List<Property> propertiesList = new List<Property>();
    propertiesList.Add(new Property("propertyExample", "value"));
    propertiesList.Add(new Property("propertyExample1", "value2"));
    propertiesList.Add(new Property("propertyExample2", "value3"));

    //Tests method AddCustomMetric giving a tuple as a param.
    using (AzureInsightsClient azureInsightsClient = new AzureInsightsClient(myClientKey))
    {
        azureInsightsClient.FlushMetrics();
        azureInsightsClient.AddCustomMetric("Example", 2, propertiesList);
    }
}
  

Кто-нибудь знает, что я делаю не так?

Комментарии:

1. Какая строка кода выдает ошибку

2. Получил это во время отладки AddMetricValues, после случая 3 (потому что это измерение 3), если я добавлю другое измерение, будет другой случай, поэтому я думаю, что это выдает его при вызове TackValue .

3. Какие значения вы получаете в metrycsValueList[0] , metrycsValueList[1] и metrycsValueList[2] . Зачем вам нужно передавать metric ему собственный метод?

4. Получаем «значение», «значение2» и «значение3». Я передал, потому что TrackValue нужен объект metric.

5. TrackValue не нужен объект Metric класса. learn.microsoft.com/en-us/dotnet/api/… Ожидается числовое значение, вот почему вы получаете эту ошибку.

Ответ №1:

TrackValue не нужен объект Metric класса. learn.microsoft.com/en-us/dotnet/api/…Ожидается числовое значение, вот почему вы получаете эту ошибку.

Автор сообщения: @Chetan Ranpariya