Как программно узнать, запущено ли мое приложение под "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.

Другие вопросы по тегам