2015-08-13 75 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或空集合。 –

+0

Ron Reyer,提前試圖解決這個問題。請參閱我的編輯以獲取更多信息,如果您仍有疑問,請再詢問一次。 –

+0

@RicardoRocha - 如果你解決了你的問題,你應該發佈你的解決方案作爲答案。如果這導致了你一個新的問題,你應該問你的新問題作爲一個新的SO問題。 –

回答

0

爲了尋找解決方案,我發現問題在於我所做的更新(版本1.0到1.2)。解決方案是將軟件降級到v1.0。

+0

我是這個社區的新人。我只是按照這個評論的建議「如果你解決了你的問題,你應該發佈你的解決方案作爲答案。如果這導致你一個新的問題,你應該問你的新問題作爲一個新的SO問題」@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"]; 
相關問題