El reto es determinar si ASP.NET está activado en IIS7 de una manera fiable y correcta.Cómo detectar si ASP.NET está habilitada en IIS 7
Activar/Desactivar se realiza en este caso por entrar en:
Server Manager ->
Roles ->
Web Server (IIS) ->
Remove Role Services ->
Remove ASP.NET
El lugar natural para determinar esto debe estar dentro del archivo applicationHost.config. Sin embargo, con ASP.NET habilitado o deshabilitado, todavía tenemos el módulo "ManagedEngine" disponible, y todavía tenemos el registro de filtro isapi en la etiqueta.
Lo mejor que puedo encontrar en este momento es comprobar si la etiqueta <isapiCgiRestriction> incluye aspnet_isapi.dll, o si el proveedor de rastreo de ASPNET está disponible.
Sin embargo estos no están detectando la presencia de la config ASP.NET directamente, sólo un efecto secundario que posiblemente podría ser reconfigurado por el usuario.
Prefiero hacer esto examinando la configuración/configuración de IIS en lugar del propio sistema operativo, si es posible, aunque puede ser aceptable enumerar los Servicios & en el servidor si podemos garantizar que esta técnica siempre funcionará cuando IIS7 es usado.
actualización
Gracias por las respuestas. Para aclarar exactamente qué es lo que quiero hacer, transfiero ajustes de una variedad de lugares en la configuración del servidor a una única vista (solo lectura) para mostrar lo que el usuario debe haber configurado para permitir que el software funcione.
Uno de los ajustes que necesitan traer es éste:
El resaltado en rojo.
No necesito manipular la configuración, simplemente reproducirla. Quiero ver si el usuario marcó el cuadro de ASP.NET cuando agregaron el rol de IIS al servidor, como en este ejemplo, claramente no lo hicieron.
Me gustaría hacerlo mirando algo confiable en IIS en lugar de enumerar los servicios de función porque no quiero agregar dependencias específicas de la plataforma en la comprobación que no necesito. No sé si alguna vez será posible instalar IIS7 en un servidor que no tenga la infraestructura Roles/Servicios, pero prefiero no preocuparme por ello. También tengo muchas bibliotecas para depurar IIS.
Sin embargo, también tengo problemas para encontrar la manera de enumerar los Roles/Servicios, así que si hay una solución que implique hacer eso, sin duda sería útil, y mucho mejor que comprobar el efecto secundario de tener el proveedor de seguimiento ASPNET por ahí.
Desafortunadamente, si no marca el botón ASP.NET, aún puede obtener el módulo ManagedEngine en el archivo IIS applicationHost.config, por lo que no es una verificación confiable. También puede hacer que ASP.NET se mapee como un filtro isapi, por lo que no es suficiente verificarlos. Estas cosas son especialmente problemáticas en el caso de que se haya instalado ASP.NET pero se haya eliminado.
Parece que la mejor solución sería examinar los Servicios de roles. Sin embargo, la información API sobre esto se ve bastante rara, de ahí el grito de ayuda.
¿Se trata de una aplicación de formularios de consola/Windows o de una aplicación IIS? ¿Te refieres a un sitio específico o simplemente en general? – Kev
La detección proviene de una aplicación de winforms. –
La detección debe hacerse en general. Básicamente, si se elimina el servicio de rol ASP.NET, que es una configuración de todo el servidor, busco una manera confiable de detectar esa condición. –