2014-11-20 6 views
17

Possiedo un sito Web di Azure. Per rispondere a questa domanda, la versione di produzione del sito Web viene eseguita su example.com e una versione di prova del sito Web viene eseguita su sandbox.example.com.Siti Web di Azure Informazioni dettagliate sulle applicazioni - configurazione di commutazione

L'unica differenza tra i due è che hanno una configurazione diversa.

Attualmente sono in esecuzione su siti Web diversi e distribuisco lo stesso sito Web su ogni sito Web di Azure tramite git.

Vorrei separare i dati di Application Insights. Esiste una tecnica o un processo che chiunque utilizza - a parte la modifica del file ApplicationInsights.config nel post dell'ambiente sandbox?

Oppure utilizzare uno slot di distribuzione gestirlo in qualche modo?

risposta

26

C'era un nuovo post sul blog esattamente su questo oggi: Application Insights Support for Multiple Environments, Stamps and App Versions.

La destinazione della telemetria è determinata dalla chiave strumentazione (iKey), che viene inviato insieme ad ogni messaggio di telemetria. Nel portale Application Insights, eventi simili e metriche con lo stesso iKey vengono aggregati per fornire grafici di durate medie, conteggi di eventi , la somma di utenti e così via. L'iKey appare in due punti nel tuo progetto . Uno è in ApplicationInsights.config: <InstrumentationKey>94843456-2345-3456-4567-324562759284</InstrumentationKey>

Se l'applicazione dispone di pagine web, l'iKey appare anche in uno script nella testa di ogni pagina web. Solitamente, è codificato solo una volta in una pagina principale come Views\Shared\_Layout.cshtml.

Per indirizzare la telemetria a diverse risorse applicative, possiamo creare diverse risorse con diversi iKeys. Quindi dobbiamo solo cambiare iKeys nell'applicazione ad ogni transizione del suo ciclo di vita - insieme ad altri dati di configurazione come stringhe di connessione, certificati e abbonamenti.

L'articolo prosegue poi su come fare questo nel codice, confg, ecc:

1) Aggiungere iKey come una proprietà in Web.config:

2) Invece di usare il iKey da ApplicationInsights.config, sarà impostarlo nel codice. In global.asax.cs.

Per evitare confusione, rimuovere il nodo <InstrumentationKey> da ApplicationInsights.config.

3) Configurare le pagine Web per raccogliere instrumentationKey: "@Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey". Questo è lo script di solito trovato in View\Shared\_Layout.cshtml.

4) Non dimenticare di aggiornare il Web.config con la configurazione appropriata durante il processo di distribuzione. Potresti escogitare un modo di impostandolo in modo appropriato come parte della tua build, ma lo lascerò a tu.

+0

Questo è proprio quello di cui ho bisogno . Sono curioso di sapere se questa era una caratteristica esistente che non era documentata (o difficile da trovare) o se è qualcosa di nuovo? –

+1

Penso che la maggior parte delle cose nel post del blog siano cose che avresti potuto fare per un po ', ma non ancora documentate. almeno con la mia lettura –

2

Nel portale di Azure per i siti Web, nella scheda di configurazione è presente una sezione denominata Impostazioni app. Puoi inserire qui le tue diverse impostazioni di configurazione. Durante la pubblicazione, azure inserirà tali impostazioni in web.config.

Quindi utilizzare semplicemente WebConfigurationManager.AppSettings come si farebbe normalmente e verrà eseguito il pull dei valori immessi.

+3

Sì - ma la configurazione di Application Insights non è in "web.config", ma piuttosto in "ApplicationInsights.config". –

+0

Scusa, ho mancato quel punto. Sembra che sia possibile configurare applicationinsights.config per configurazione di build. Ecco un collegamento ... http://msdn.microsoft.com/en-us/library/dn550723.aspx – dascalos

2

Questa domanda semi-correlata è stata trovata: How to support multiple Azure subscriptions for a single application with application insights utilizzata dai servizi cloud e funziona!

Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = ConfigurationManager.AppSettings["appInsightsKey"]; 

ho fatto nel mio metodo registerTypes unità, che ci lavora.

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – JTG

+0

@JTG è questa una risposta migliore? – Dennis

+0

Capisco che non si può commentare ancora e che forse frustrante, ma ciò non significa che la sezione di risposta diventa una sezione di commenti estemporanei per coloro che non hanno una rep sufficiente. I commenti di blocco delle segnalazioni rappresentano il modo migliore per SO di bloccare lo spam. Fai delle buone domande e/o posta delle buone risposte e otterrai facilmente i 50 punti rep necessari per contribuire. – JTG