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