#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