No estoy seguro de que esto sea posible, pero estoy esperando una pista para determinar si el código que se está ejecutando actualmente se está ejecutando bajo IIS Express. Mi mejor aproximación hasta el momento, que es increíblemente hacker y sin duda fallará/descanso en algún momento:Programmatically determine si el código se está ejecutando en IIS Express
bool IsExpress =
Request.ServerVariables["SERVER_SOFTWARE"] == "Microsoft-IIS/7.5"
&& Int32.Parse(Request.ServerVariables["INSTANCE_ID"]) > 1000000000;
Desde luego, tiene que haber una mejor manera. Mi examen de los objetos Application, Server y Request no pareció revelar nada que pudiera proporcionar una mejor idea. Tal vez solo necesito ver otro objeto?
Actualización:
estoy realmente ansioso por ver si hay una manera de detectar esto - es muy académica en este momento no tengo una sensación de ardor que usarlo. La pregunta original está en pie. Pero en el espíritu de responder a los comentarios, específicamente estoy interesado en responder a una crítica de otra pregunta/respuesta en este sitio: How to search the server's MIME map. La crítica es que la respuesta publicada no funciona para IIS Express, solo las instancias tradicionales de IIS. IIS Express almacena la configuración MIME en el archivo XML applicationhost.config y me gustaría actualizar esa respuesta para proporcionar una forma de devolver esa información para IIS Express también. Ciertamente podría simplemente agregar un código que tome el valor apropiado del XML (¡Yay para LINQ to XML!) Pero realmente me gustaría hacerlo más inteligente. Para ser claros, no necesito ayuda para analizar ese archivo, solo algo más elegante al tratar de detectar si el código se está ejecutando actualmente en el motor IIS Express.
Actualización 2:
IIS 8.0 Beta expreso era released this week, y va más allá para demostrar que el enfoque en mi pregunta es frágil y se romperá. Si bien no es un factor decisivo para apuntar a una versión específica, sería bueno contabilizar eso y tratar de garantizar que el código funcionará con al menos las versiones conocidas de hoy.
¿cuál es su objetivo? ¿Por qué quieres detectar esto (quizás hay alguna otra forma de lograr tu objetivo)? – Yahia
Si se está ejecutando en IIS Express, ¿qué quiere manejar de forma diferente? Tal vez esa es la pregunta que debe hacer en lugar de cómo detectar IIS Express. "¿Cómo hago ____ en lugar de _____ cuando se ejecuta en depuración?", Por ejemplo. –
El deseo se centra en examinar algunos elementos de configuración, utilizando DirectoryEntry ("IIS:/localhost/W3SVC /") y analizando el XML en applicationhost.config que controla IIS Express. – Goyuix