Каков рекомендуемый способ, позволяющий приложению ASP.NET знать, в какой среде он работает? Мое приложение может работать в таких условиях:Как настроить среду приложения ASP.NET?
- Отладка в Visual Studio
- Автоматизированная система испытаний
- развертывания на промежуточном сервере
- развертывания на сервере
В каждом из в этих средах приложение нуждается в некоторой конфигурации. Основное различие между средами заключается в том, какие параметры подключения к базе данных использовать, но есть и другие отличия.
Это то, что я пробовал:
- Я попытался с помощью опции «конфигурации» в Visual Studio. По умолчанию есть два: Release и Debug. Я попытался заменить эти два идентификаторами для моих четырех сред. Эти конфигурации затем могут использоваться для применения преобразования к файлу Web.config. Проблема в том, что выбор конфигурации происходит во время сборки, и я хотел бы скомпилировать мое приложение, а затем выбрать среду перед ее запуском на веб-сервере. Преобразование Web.config также не происходит при отладке внутри Visual Studio, поэтому вместо того, чтобы сообщать приложению, что он работает в среде отладки, он не получает среды. Я нашел обходной путь в Use Visual Studio web.config transform for debugging, но он не работает нормально. Мне нужно изменить конфигурацию в свойствах проекта, что является медленным процессом.
- Я попытался использовать переменную окружения. Таким образом, я мог бы установить переменную MYAPP_ENV = dev извне приложения, и я мог бы прочитать ее на C# как
string env = System.Environment.GetEnvironmentVariable ("MYAPP_ENV");
Но тогда я не уверен, как установить эту переменную среды из Visual Studio и изнутри IIS. Я не могу установить его глобально на машине, потому что тот же компьютер должен иметь возможность запускать приложение в нескольких средах.
Итак, как рекомендуемый способ сделать это в ASP.NET? В Ruby on Rails я бы использовал переменную среды RAILS_ENV, а в PHP я бы включил файл, который не был проверен в репозитории и добавлен в список игнорирования системы управления версиями.
Это не ясно, если вы делаете это, но я хотел бы попробовать воздержаться от использования (например, 'if env ==" dev "{} else {}', потому что ваш сайт ведет себя по-разному в разных средах. Любые значения, которые необходимо изменить, должны быть изменены в файлах конфигурации (см. ответ AaronS). – Jeff