visual una studio puede pagina net habilitar debug crear como asp asociar aplicaciones aplicacion c# iis iis-express

c# - una - Determine programáticamente si el código se está ejecutando en IIS Express



habilitar debug web config (3)

No estoy seguro de que esto sea siquiera posible, pero estoy esperando una pista para determinar si el código que se está ejecutando se está ejecutando bajo IIS Express. Mi mejor aproximación hasta ahora, que es increíblemente hackish y ciertamente fallará / romperá en algún momento:

bool IsExpress = Request.ServerVariables["SERVER_SOFTWARE"] == "Microsoft-IIS/7.5" && Int32.Parse(Request.ServerVariables["INSTANCE_ID"]) > 1000000000;

Ciertamente 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?

Actualizar:

Tengo mucha curiosidad si hay una manera de detectar esto: es realmente académico en este momento, no tengo una necesidad ardiente de 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: Cómo buscar en el mapa MIME del servidor . 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 Express Beta fue lanzado esta semana , y además muestra 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.


¿No podemos probar y ver si una o más limitaciones de IIS Express funciona o no? Si funciona, no es IIS Express. Ejemplo IIS Express no es compatible con servicios de SharePoint


¿Sería el control del nombre del proceso actual el truco?

bool isExpress = String.Compare(Process.GetCurrentProcess().ProcessName,"iisexpress") == 0;

Normal IIS se ejecuta en w3wp.exe desde la memoria.