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

У меня есть сайт, который использует Google Analytics и Google Maps. Обе эти службы имеют ключи API, которыми необходимо управлять в коде нашего сайта. Для Google Analytics у нас есть две учетные записи, реальная учетная запись и промежуточная учетная запись для тестирования отслеживания до обеда. Для Google Maps нам действительно нужен уникальный ключ API для каждого имени хоста. У нас есть несколько промежуточных доменов и локальных имен хостов, поэтому в коде наших карт довольно мало переключений для ключей API.

Сейчас я управляю своими ключами в коде C # для соответствующих страниц, используя переключатель на 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
}

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

  1. Использование настроек приложения в моем web.config: одна проблема здесь заключается в том, что ключи карт часто меняются в зависимости от имен хостов (т. Е. Управлять многими вариантами ключа карт было бы кошмаром)
  2. Наличие класса C # для обработки всех этих ключей на основе имени хоста: я мог бы написать статический класс, у которого есть свойства для ключа аналитики и ключа карт, и на основе Request.Url.Host я мог бы установить свойства для их соответствующих ценности. Этот метод по сути является моим методом switch, заключенным во вспомогательный класс.

Ответы [ 2 ]

0 голосов
/ 19 апреля 2010

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

web.config

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

с #

System.Configuration.ConfigurationManager.AppSettings(fieldname)
0 голосов
/ 19 апреля 2010

Обе:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...