Pregunta

Tengo un sitio que aprovecha tanto de Google Analytics y Google Maps. Ambos servicios tienen claves de la API que necesitan ser administrados en el código de nuestro sitio. Para Google Analytics, tenemos dos cuentas, una cuenta en vivo y cuenta de ensayo para probar el seguimiento antes del almuerzo. Para Google Maps que realmente se necesita una clave de API única para cada nombre de host individual. Tenemos varios dominios de parada y nombres de host locales por lo que nuestro código de mapas tiene un poco de alternar para claves de la API.

En este momento estoy manejando mis llaves en un C # de código subyacente para las páginas respectivas mediante un interruptor en el Request.Url.Host:

// for analytics in file1
switch (Request.Url.Host) {
  case "staging": ltlUACode.Text = "stageKey"; break;
  case "client.stage.com": ltlUACode.Text = "stageKey"; break;
  case "www.livesite.com": ltlUACode.Text = "liveKey"; break;
  case "livesite.com": ltlUACode.Text = "liveKey"; break;
}

// for maps in file2
switch(Request.Url.Host) {
  case "staging": GoogleMapsKey = "uniqueKey1"; break;
  case "client.stage.com": GoogleMapsKey = "uniqueKey2"; break;
  case "www.livesite.com": GoogleMapsKey = "uniqueKey3"; break;
  // etc
}

Me gustaría saber lo que iba a ser un mejor método para realizar un seguimiento de todas estas teclas. Consideré dos cosas posibles que podrían trabajar:

  1. Uso de configuración de la aplicación en mi web.config: un problema aquí es que aunque los mapas teclas cambian a menudo sobre la base de los nombres de host (es decir, las muchas variantes de los mapas clave sería una pesadilla para administrar)
  2. Tener una clase C # para manejar todas estas claves basadas en el nombre de host: Yo podría escribir una clase estática que tiene propiedades para la clave de análisis y los mapas clave y basada en la Request.Url.Host pude establecer las propiedades a sus valores apropiados. Este método es esencialmente mi método de cambio envuelto en una clase de ayuda.
¿Fue útil?

Solución

hacer las dos cosas:

Dado que en realidad no son de código, almacenar el Dominio => pares apikey en el web.config. Para grandes bloques de configuración web.config similares, es útil para crear secciones y manejadores personalizados . La bonificación del trabajo extra aquí es que se puede ampliar la funcionalidad de la sección de Uso manipuladores para devolver los valores correctos basados ??en el medio ambiente, también.

Crear un tipo de sección personalizada, a continuación, añadir una sección (de este tipo) para cada clave de API (mapas, análisis, etc.).

Otros consejos

Por lo general separarlos en sus propios archivos y luego desplegar diferentes archivos de configuración en función de su ubicación.

web.config

   <appSettings configSource="Host1.config">
        </appSettings>

c #

System.Configuration.ConfigurationManager.AppSettings(fieldname)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top