2015-08-13 13 views
5

Ho due progetti: uno è un'applicazione MVC4 e un altro è una libreria di classi di tipi di output.Application Insights

Voglio rendere il secondo progetto (quello della libreria di classi) uno strato di comunicazione di approfondimenti.

Il codice viene compilato e il server viene eseguito normalmente.

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 = ""; 
    } 
} 

del quando chiamo la funzione di avvio telemetry.TrackMetric problema. Questo codice restituisce l'errore:

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

È possibile utilizzare Microsoft Insights in un progetto di libreria di classi? E se lo è, cosa sto sbagliando?

+1

Ci sono alcune informazioni aggiuntive bisogno, vuol dire che cosa è nullo? 'Title' o' properties' null? Certamente sembra che 'properties' potrebbe essere dato un parametro predefinito. Di cosa si lamenta specificamente? So che è contrassegnato come predefinito nel metodo metrico, ma non riesco a scoprire se per impostazione predefinita è null o una raccolta vuota. –

+0

Ron Reyer, in anticipo per cercare di risolvere questo problema. Vedi la mia modifica per maggiori informazioni, e se hai ancora dei dubbi, chiedi di nuovo. –

+0

@RicardoRocha - Se hai risolto il tuo problema, devi pubblicare la tua soluzione come risposta. Se questo ti ha portato a una nuova domanda, dovresti porre la tua nuova domanda come una nuova domanda SO. –

risposta

0

Andando a fondo nella mia ricerca di soluzioni, ho scoperto che il problema era l'aggiornamento che ho fatto (versione 1.0 a 1.2). La soluzione è stata il downgrade del software alla versione 1.0.

+0

Sono nuovo in questa comunità. Seguo semplicemente il consiglio di questo commento "Se hai risolto il tuo problema, devi postare la tua soluzione come risposta. Se questo ti ha portato a una nuova domanda, dovresti porre la tua nuova domanda come una nuova domanda di SO" di @Philip Pittle –

+2

Questa è una soluzione (dovresti accettare da solo una volta che è passato abbastanza tempo per farlo). – ryanyuyu

+1

Qualche idea sul perché l'abbia risolto? Ho avuto lo stesso problema con la versione 1.0.0 e ho provato l'aggiornamento a 1.2.0 per risolvere il mio problema, ma finora non ci sono dadi. –

2

Recentemente ho aggiornato alla versione 1.2.0 e ho riscontrato lo stesso problema. Oltre all'impostazione standard, il mio codice sostituiva la chiave di strumentazione nello ApplicationInsights.config con uno memorizzato nello web.config. Questo è stato fatto tramite il global.asax - Application_Start. Il codice funziona bene localmente, ma bombarda quando distribuito in Azure.

Si è scoperto che era un problema di come stavo accedendo allo web.config. Ho dovuto passare il mio codice dall'uso di WebConfigurationManager a ConfigurationManager.

Questo codice Application_Start:

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

cambiato a questo:

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = System.Configuration.ConfigurationManager.AppSettings["MyInstrumentationKey"]; 
Problemi correlati