Как программно узнать, запущено ли мое приложение под "ASP.NET Development Server"?
У меня есть некоторые значения по умолчанию для тестирования моего кода, но по соображениям безопасности эти значения должны быть установлены только тогда, когда мое приложение работает на сервере разработки ASP.NET, а не в рабочей. Как я могу программно определить, где работает мое приложение?
3 ответа
Метод заключается в том, чтобы добавить свойство в вашу конфигурацию, которое можно установить с помощью файла преобразования кодирования. В вашем файле web.config "DEV" может быть истинным. В вашем файле производственного преобразования ваш "DEV" может быть ложным. С помощью этой техники вы даже можете иметь значение, чтобы определить, находитесь ли вы, например, в Staging, Testing, Pre-Production. Этот метод также используется для изменения строк соединения.
Файл преобразования используется для изменения различных значений в вашей конфигурации в зависимости от вашего развертывания.
Подробнее читаем: Как: преобразовать Web.config при развертывании проекта веб-приложения
Это очень плохой способ определить, работает ли ваше приложение локально или в работе. Лучший способ - использовать значения времени выполнения web.config (с соответствующим преобразованием для режимов отладки и выпуска) или даже скомпилировать условные выражения времени (#if DEBUG ... #endif
).
Если под "Сервер разработки ASP.NET" вы имеете в виду сервер Cassini, включенный в Visual Studio, для этого нет поддерживаемого способа.
Вы можете либо добавить информацию в web.config, как предлагали другие, либо использовать какой-либо неподдерживаемый метод (не гарантируется работа в будущих версиях...). Например, проверить
System.Environment.CommandLine
который будет содержать "...WevDev.WebServer..." при запуске под Cassini.