Управление многими вариантами сторонних API-ключей в ASP.NET

2

У меня есть сайт, который использует как 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 я мог бы задать свойства соответствующим образом значения. Этот метод по сути является моим методом коммутатора, заключенным в класс-помощник.
Теги:
api-key

2 ответа

0
Лучший ответ

Сделайте оба:

Так как они не являются кодом, храните пары Domain = > ApiKey в веб-конфигурации. Для больших блоков аналогичных настроек web.config полезно создавать пользовательские разделы и обработчики. Бонус дополнительной работы здесь заключается в том, что вы можете расширить функциональные возможности обработчиков пользовательских разделов, чтобы вернуть правильные значения на основе среды.

Создайте один тип настраиваемого раздела, затем добавьте один раздел (этого типа) для каждого ключа api (карты, аналитика и т.д.).

0

Я обычно разделяю их на свои собственные файлы, а затем разворачиваю различные файлы конфигурации на основе их местоположения.

web.config

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

С#

System.Configuration.ConfigurationManager.AppSettings(fieldname)
  • 0
    Отчасти проблема этого подхода заключается в том, что один и тот же веб-сайт IIS имеет несколько привязок узлов, поэтому один и тот же код отображает один и тот же сайт по разным URL-адресам. Именно поэтому я не могу сделать это таким образом ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню