resource - Información de la aplicación de los sitios web de Azure
porta azure (3)
Tengo un sitio web de Azure. Por el bien de esta pregunta, la versión de producción del sitio web se ejecuta en example.com
, y una versión de prueba del sitio web se ejecuta en sandbox.example.com
.
La única diferencia entre los dos es que tienen una configuración diferente.
En la actualidad, se ejecutan en diferentes sitios web y yo implemento el mismo sitio web en cada sitio web de Azure a través de git.
Me gustaría separar los datos de Application Insights. ¿Existe alguna técnica o proceso que alguien use, además de editar el archivo ApplicationInsights.config
en la implementación de entorno de sandbox?
¿O podría manejar esto una ranura de implementación de alguna manera?
En el portal de Azure para sitios web, en la pestaña de configuración hay una sección llamada Configuración de la aplicación. Puedes poner tus diferentes configuraciones aquí. Al publicar, Azure inyectará esas configuraciones en web.config.
Luego simplemente use WebConfigurationManager.AppSettings como lo haría normalmente y extraerá los valores inyectados.
Encontré esta pregunta semi-relacionada: cómo admitir varias suscripciones de Azure para una aplicación única con información de aplicaciones, esto es para el uso de los servicios en la nube, ¡y funciona!
Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey = ConfigurationManager.AppSettings["appInsightsKey"];
He hecho esto en mi método de registro de unidad, funciona allí.
Hubo una nueva publicación en el blog sobre exactamente esto hoy: Application Insights, soporte para entornos múltiples, sellos y versiones de aplicaciones .
El destino de la telemetría está determinado por la clave de instrumentación (iKey), que se envía junto con cada mensaje de telemetría. En el portal de Application Insights, los eventos y las métricas similares con la misma iKey se agregan para ofrecerle gráficos de duraciones promedio, conteos de eventos, la suma de usuarios, etc. La iKey aparece en dos lugares en su proyecto. Uno está en
ApplicationInsights.config
:<InstrumentationKey>94843456-2345-3456-4567-324562759284</InstrumentationKey>
Si su aplicación tiene páginas web, la iKey también aparece en un script en el encabezado de cada página web. Por lo general, solo se codifica una vez en una página maestra como
Views/Shared/_Layout.cshtml
.Para dirigir la telemetría a diferentes recursos de aplicaciones, podemos crear varios recursos con diferentes iKeys. Entonces solo tenemos que cambiar las iKeys en la aplicación en cada transición en su ciclo de vida, junto con otros datos de configuración como cadenas de conexión, certificados y suscripciones.
El artículo continúa sobre cómo hacer esto en código, confg, etc:
1) Agregar
iKey
como una propiedad enWeb.config
:2) En lugar de usar la
iKey
deApplicationInsights.config
, la estableceremos en el código. Englobal.asax.cs
.Para evitar confusiones, elimine el nodo
<InstrumentationKey>
deApplicationInsights.config
.3) Configure las páginas web para seleccionar
instrumentationKey: "@Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration.Active.InstrumentationKey"
. Esta es la secuencia de comandos que generalmente se encuentra enView/Shared/_Layout.cshtml
.4) No olvide actualizar su
Web.config
con la configuración adecuada deiKey
durante el proceso de implementación. Puede idear una forma de configurarlo adecuadamente como parte de su construcción, pero se lo dejo a usted.