Я не уверен, что это вообще возможно, но я надеюсь на подсказку, чтобы определить, работает ли код, который в настоящее время выполняется, под IIS Express. Мое лучшее приближение на данный момент, которое невероятно хакерское и в какой-то момент обязательно сломается:
bool IsExpress =
Request.ServerVariables["SERVER_SOFTWARE"] == "Microsoft-IIS/7.5"
&& Int32.Parse(Request.ServerVariables["INSTANCE_ID"]) > 1000000000;
Конечно, должен быть лучший способ. Мое исследование объектов Application, Server и Request, похоже, не выявило ничего, что могло бы дать лучшее понимание. Возможно, мне просто нужно посмотреть на какой-то другой объект?
Обновление:
Мне действительно любопытно, есть ли способ обнаружить это - на данный момент это действительно академический вопрос, у меня нет острой необходимости его использовать . Оригинальный вопрос остается в силе. Но в духе ответа на комментарии, в частности, мне интересно ответить на критику из другого вопроса/ответа на этом сайте: Как искать карту MIME сервера. Критика заключается в том, что опубликованный ответ не работает для IIS Express, а только для традиционных экземпляров IIS. IIS Express хранит конфигурацию MIME в XML-файле applicationhost.config, и я хотел бы обновить этот ответ, чтобы предоставить способ вернуть эту информацию и для IIS Express. Конечно, я мог бы просто добавить код, который берет соответствующее значение из XML (ура, LINQ to XML!), но я действительно хотел бы сделать его умнее.Чтобы было ясно, мне не нужна помощь в анализе этого файла — просто что-то более элегантное в попытке определить, выполняется ли в данный момент код в движке IIS Express.
Обновление 2:
Бета-версия IIS 8.0 Express Beta была выпущена на этой неделе, и это также показывает, что подход в моем вопросе хрупок и сломается. Хотя нацеливание на конкретную версию не является препятствием, было бы неплохо учесть это и попытаться убедиться, что код будет работать по крайней мере с известными сегодня версиями.