Управление несколькими файлами web.config для приложения MVC3 Azure - PullRequest
5 голосов
/ 09 марта 2012

У меня есть приложение ASP.NET MVC 3, работающее в Azure. Он также использует SQL Azure для базы данных.

Я хочу развернуть это приложение в разных экземплярах (тестирование, демонстрация, несколько производств), и каждому экземпляру нужна своя уникальная база данных SQL.

Я знаю, что с новым обновлением Azure Tools вы можете управлять несколькими конфигурациями служб. Это здорово и почти решит мою проблему. Единственная проблема связана со строками соединения SQL в файлах web.config в части проекта MVC.

Мне нужна та же функциональность, что и для функции нескольких конфигураций служб, но я делаю это для строк подключения SQL.

Спасибо за вашу помощь !!

Ответы [ 2 ]

5 голосов
/ 09 марта 2012

Преобразования конфигурации .Net должны выполнить эту работу. Как и в конфигурациях службы Azure, для каждого экземпляра, в котором вы хотите выполнить развертывание, создается отдельный файл Web.ConfigurationName.config. Построение решения с правильной конфигурацией (тестирование, демонстрация и т. Д.) Вставит правильные значения конфигурации «экземпляра» в файл Web.config.

3 голосов
/ 09 марта 2012

Обычно я храню строки подключения SQL в файлах ServiceDefinition. *. Cscfg. Таким образом, вы получаете дополнительное преимущество возможности редактировать их на запущенных экземплярах, что отлично подходит для VIP-свопов.

Если вы тестируете вне эмулятора на машинах разработки, написать абстракцию над конфигом довольно просто:

class AzureConfig : IConfig
{
  public string GetConnectionString(string name)
  {
    get
    {
      return RoleEnvironment.GetConfigurationSettingsValue(name);
    }
  }
}

class OnPremConfig : IConfig
{
  public string GetConnectionString(string name)
  {
    get
    {
      return ConfigurationManager.ConnectionStrings[name].ConnectionString;
    }
  }
}

Затем настройте свой контейнер IoC, чтобы проверить RoleEnvironment.IsAvailable и вернуть соответствующий тип.

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