Как настроить среду приложения ASP.NET? - PullRequest
1 голос
/ 05 января 2012

Каков рекомендуемый способ предоставления приложению ASP.NET информации о том, в какой среде оно работает? Мое приложение может работать в следующих средах:

  • Отладка в Visual Studio
  • Автоматизированная система тестирования
  • Развертывание на промежуточном сервере
  • Развертывание на рабочем сервере

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

Вот что я пробовал:

  • Я пытался использовать опцию «настройки» в Visual Studio. По умолчанию их два: Release и Debug. Я попытался заменить эти два идентификаторами для моих четырех сред. Затем эти конфигурации можно использовать для применения преобразования к файлу Web.config. Проблема в том, что выбор конфигурации происходит во время сборки, и я хотел бы скомпилировать свое приложение, а затем выбрать среду перед запуском ее на веб-сервере. Преобразование Web.config также не происходит при отладке внутри Visual Studio, поэтому вместо того, чтобы сообщать приложению, что оно выполняется в среде отладки, оно не получает никакой среды. Я нашел обходной путь на Используйте преобразование Visual Studio web.config для отладки , но, похоже, он не работает должным образом. Я должен изменить конфигурацию в свойствах проекта, что является медленным процессом.
  • Я пытался использовать переменную окружения. Таким образом, я мог установить переменную MYAPP_ENV = dev из-за пределов приложения, и я мог прочитать ее в C # как
    строка env = System.Environment.GetEnvironmentVariable ("MYAPP_ENV");
    Но тогда я не уверен, как установить эту переменную среды из Visual Studio и из IIS. Я не могу установить его глобально на компьютере, потому что один и тот же компьютер должен иметь возможность запускать приложение в нескольких средах.

Итак, как рекомендуемый способ сделать это в ASP.NET? В Ruby on Rails я использовал бы переменную среды RAILS_ENV, а в PHP я бы включил файл, который не регистрируется в репозитории и добавляется в список игнорирования системы контроля версий.

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Я хотел бы иметь отдельные файлы web.config для каждой из ваших сред.

В качестве альтернативы, вы также можете настроить что-то похожее на то, что вы сделали с вашим включаемым файлом PHP, добавив внешний файл конфигурации.

Просто добавьте следующее в ваш web.config.

<appSettings file="MySettings.config">

Затем добавьте новый файл MySettings.config, содержащий остальную информацию о вашей конфигурации.

1 голос
/ 05 января 2012

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

<appSettings>
    <add key="Environment" value="DEV" />   
</appSettings>

Затем вы можете получить доступ к этим значениям через класс ConfigurationManager

var currentEnvironment = ConfigurationManager.AppSettings["Environment"].ToString();
...