У меня есть сайт, который использует как Google Analytics, так и Google Maps. Обе эти службы имеют ключи API, которым необходимо управлять в нашем коде сайта. Для Google Analytics у нас есть две учетные записи, реальная учетная запись и промежуточная учетная запись для проверки отслеживания до обеда. Для Google Maps нам действительно нужен уникальный ключ API для каждого имени хоста. У нас есть несколько промежуточных доменов и локальных имен хостов, поэтому наш код карты имеет довольно много переключений для ключей API.
Прямо сейчас я управляю своими ключами в коде с кодом С# для соответствующих страниц, используя переключатель на 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
}
Я хотел бы знать, что лучше всего будет отслеживать все эти ключи. Я рассмотрел две возможные вещи, которые могли бы работать:
web.config
: одна проблема здесь заключается в том, что ключи карт часто меняются на основе имен хостов (т.е. многие варианты для ключа карты будут кошмаром для управления).Request.Url.Host
я мог бы задать свойства соответствующим образом значения. Этот метод по сути является моим методом коммутатора, заключенным в класс-помощник.Сделайте оба:
Так как они не являются кодом, храните пары Domain = > ApiKey в веб-конфигурации. Для больших блоков аналогичных настроек web.config полезно создавать пользовательские разделы и обработчики. Бонус дополнительной работы здесь заключается в том, что вы можете расширить функциональные возможности обработчиков пользовательских разделов, чтобы вернуть правильные значения на основе среды.
Создайте один тип настраиваемого раздела, затем добавьте один раздел (этого типа) для каждого ключа api (карты, аналитика и т.д.).
Я обычно разделяю их на свои собственные файлы, а затем разворачиваю различные файлы конфигурации на основе их местоположения.
web.config
<appSettings configSource="Host1.config">
</appSettings>
С#
System.Configuration.ConfigurationManager.AppSettings(fieldname)