2015-08-13 3 views
0

Я развертываю тестовое приложение в AppHarbor, и я пытаюсь обновить переменные конфигурации AppHarbor для добавления ElephantSQL при развертывании.Конфигурационные переменные AppHarbor, не обновляемые

Эти вопросы не помогут решить мою проблему:

Мои аддон Конфигурация Variable - Ключ: ELEPHANTSQL_URL

Моя настраиваемая конфигурация Variable - Ключ: Foo Значение: бар

Теперь, глядя на AppHarbor documentation все, что я должен сделать, это установить appsetting иметь такое же имя, что и выше ключа.

Так вот мой web.config:

<connectionStrings> 
    <add name="ELEPHANTSQL_URL" connectionString="Server=localhost;Database=foo;User Id=bar;Password=baz;" providerName="Npgsql" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="ELEPHANTSQL_URL" value="dev"/> 
    <add key="foo" value="baz"/> 
    </appSettings> 

А вот мой web.release.config (который был установлен построить Действие: Содержание)

<connectionStrings> 
    <add name="ELEPHANTSQL_URL" connectionString="release" providerName="Npgsql" xdt:Transform="Replace" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="ELEPHANTSQL_URL" value="release" xdt:Transform="Replace" /> 
    <add key="foo" value="release" xdt:Transform="Replace" /> 
    </appSettings> 

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

В журнале построения нет упоминания о преобразовании, и я не уверен, что это нормально (см. Ниже).

Время Сообщение
8/12/15 9:18 вечер получил уведомление, очереди строить
8/12/15 9:19 PM источник Загрузки
8/12/15 9:19 PM Загруженный источника в 0,48 секунды
8/12/15 9:19 вечера Начиная пакет NuGet восстановления
8/12/15 9:19 вечера NuGet пакет восстановления завершен Показать журнал 8/12/15 9:19 вечера начала строить
8/12/15 9:19 PM 0 предупреждений
8/12/15 9:19 PM Построение завершено за 3,9 секунды Sh вл Войти 8/12/15 9:19 PM сайт Начало предварительной компиляции
8/12/15 9:19 PM прекомпиляцию завершена в 11.24 секунд
8/12/15 9:19 PM тесты Стартовые
8/12/15 9:19 PM Тесты завершены за 1,94 секунды
8/12/15 21:20 Развертывание сборки
8/12/15 9:20 PM Полученный корневой контент веб-сайта Показать журнал 8/12/15 9:20 PM Построено успешно развернуто

Адрес этой страницы:config in the build загрузить:

<connectionStrings> 
     <add name="ELEPHANTSQL_URL" connectionString="Server=localhost;Database=foo;User Id=bar;Password=baz;" providerName="Npgsql" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="ELEPHANTSQL_URL" value="dev" /> 
    <add key="foo" value="baz" /> 
    </appSettings> 

Я не уверен, что мне не хватает.

Идеи?

ответ

0

Итак, у меня была ошибка в моем коде, но приведенная ниже информация - это то, что я использовал, чтобы понять, что AppHarbor делает с переменными конфигурации, и разрешил мне исправить это.

Этот article содержит неопределенные сведения о том, как работают переменные конфигурации, но вот TLDR.

  1. Конфигурационные переменные ТОЛЬКО работают с AppSettings; вы не можете использовать их со строками подключения
  2. Значение ключа AppSettings должно совпадать с именем переменной конфигурации.
  3. Преобразования Web.config происходят с PRIOR в обновлениях Configuration Variable.
  4. Завершающий шаг: AppSettings обновляются с помощью конфигурационных переменных.

Примечание от поддержки AppHarbor:

Конфигурация производства для вашего приложения не впрыскивается до приложения фактически развернуто, так что если вы загружаете сборки артефакта страницы журнала сборки вы выиграли» t увидеть любую новую конфигурацию - это «нетронутая» сборка, и конфигурация может быть изменена, если вы добавляете/удаляете конфигурационные переменные, надстройки или в случае , поставщик дополнительных устройств подталкивает новые настройки к AppHarbor.

Так что, если вам нужно/хочу, чтобы подтвердить, что AppSettings, вы должны иметь собственный способ доступа к этой информации (протоколирование, действие контроллера и т.д.)