2015-08-13 4 views
5

У меня есть два проекта: один - это приложение MVC4, а другое - библиотека классов выходного типа.Application Insights

Я хочу сделать второй проект (класс библиотеки один) слоем общения с пониманием.

Код компилируется, и сервер работает нормально.

public static void SaveMetric(string title, double value, 
    string azureKey, Dictionary<string, string> properties = null) 
{ 
    try 
    { 
     TelemetryClient telemetry = new TelemetryClient(); 
     telemetry.InstrumentationKey = azureKey; 
     telemetry.TrackMetric(title, value, properties); 
    } 
    catch (Exception ex) 
    { 
     var a = ""; 
    } 
} 

Начало проблема, когда я вызвать функцию telemetry.TrackMetric. Этот код возвращает ошибку:

"Object reference not set to an instance of an object."(System.NullReferenceException).

Возможно ли использовать Microsoft Insights в проекте библиотеки классов? И если это так, что я делаю неправильно?

+1

Существует некоторая дополнительная информация необходима, это говорит, что равно нулю? Является ли 'title' или' properties 'null? Конечно, кажется, что 'properties' может быть с момента его использования по умолчанию. Что конкретно жалуется? Я знаю, что его отмечен как значение по умолчанию в методе метрики, но я не могу узнать, по умолчанию ли это его нулевая или пустая коллекция. –

+0

Рон Рейер, заранее забегай, чтобы попытаться решить эту проблему. См. Мое редактирование для получения дополнительной информации, и если у вас все еще есть сомнения, спросите еще раз. –

+0

@ RicardoRocha - Если вы решили свою проблему, вы должны отправить свое решение в качестве ответа. Если это привело вас к новому вопросу, вы должны задать свой новый вопрос в качестве нового вопроса SO. –

ответ

0

Глубокий поиск решений, я обнаружил, что проблема была в обновлении, которое я сделал (версия 1.0 - 1.2). Решение состояло в том, чтобы понизить программное обеспечение до версии 1.0.

+0

Я новый в этом сообществе. Я просто следую советам этого комментария: «Если вы решили свою проблему, вы должны отправить свое решение в качестве ответа. Если это привело вас к новому вопросу, вы должны задать свой новый вопрос как новый вопрос SO» by @Philip Pittle –

+2

Это решение (вы должны сами принять, как только достаточно много времени для этого). – ryanyuyu

+1

Любая идея, почему это решило? У меня была та же проблема с версией 1.0.0 и я попытался обновить до версии 1.2.0, чтобы решить мою проблему, но до сих пор нет кубиков. –

2

Я недавно обновился до 1.2.0 и столкнулся с той же проблемой. В дополнение к стандартной настройке мой код переопределял ключ инструментария в ApplicationInsights.config с сохраненным в web.config. Это было сделано через global.asax - Application_Start. Код работает нормально локально, но запускается при развертывании в Azure.

Оказалось, что это была проблема с тем, как я обращался к web.config. Мне пришлось переключить код с WebConfigurationManager на ConfigurationManager.

Этот Application_Start код:

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = System.Web.Configuration.WebConfigurationManager.AppSettings["MyInstrumentationKey"]; 

изменен следующим образом:

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = System.Configuration.ConfigurationManager.AppSettings["MyInstrumentationKey"]; 
Смежные вопросы