Le défi consiste à déterminer si ASP.NET est activé dans IIS7 de manière fiable et correcte.Comment détecter si ASP.NET est activé dans IIS 7
Activation/désactivation se fait dans ce cas en allant dans:
Server Manager ->
Roles ->
Web Server (IIS) ->
Remove Role Services ->
Remove ASP.NET
Le lieu naturel pour déterminer ce qui devrait être dans le fichier applicationHost.config. Cependant, avec ASP.NET activé ou désactivé, nous avons toujours le module "ManagedEngine" disponible, et nous avons toujours l'enregistrement de filtre isapi dans la balise.
Le meilleur que je peux trouver en ce moment est de vérifier si la balise <isapiCgiRestriction> inclut aspnet_isapi.dll, ou que le fournisseur de trace ASPNET est disponible.
Toutefois, ceux-ci ne détectent pas directement la présence de la configuration ASP.NET, mais seulement un effet secondaire qui pourrait être reconfiguré par l'utilisateur. Je préfère faire cela en examinant la configuration/installation IIS plutôt que l'OS lui-même, si possible, bien que l'énumération des rôles & Services sur le serveur pourrait être acceptable si nous pouvons garantir que cette technique fonctionnera toujours à chaque fois que IIS7 est utilisé.
Mise à jour
Merci pour les réponses. En clarifiant exactement ce que je veux faire, je tire les paramètres d'une variété d'endroits dans la configuration du serveur dans une vue unique (en lecture seule) pour montrer ce que l'utilisateur doit avoir configuré pour permettre au logiciel de fonctionner.
L'un des paramètres que je dois apporter est celui-ci:
L'un en rouge.
Je n'ai pas besoin de manipuler le réglage, il suffit de le reproduire. Je veux voir si l'utilisateur a vérifié la boîte ASP.NET quand ils ont ajouté le rôle d'IIS au serveur, comme dans cet exemple ils n'ont clairement pas. Je voudrais faire cela en regardant quelque chose de fiable dans IIS plutôt qu'en énumérant les services de rôle car je ne veux pas ajouter de dépendances spécifiques à la plate-forme sur la vérification dont je n'ai pas besoin. Je ne sais pas s'il sera toujours possible d'installer IIS7 sur un serveur qui ne dispose pas de l'infrastructure Roles/Services, mais de préférence, je préfère ne pas m'en préoccuper. J'ai également une charge de bibliothèques pour nettoyer autour d'IIS déjà. Cependant, j'ai aussi du mal à trouver comment énumérer les rôles/services, donc s'il y a une solution qui implique de le faire, ce serait certainement utile, et bien mieux que de vérifier l'effet secondaire d'avoir le fournisseur de trace ASPNET qui traîne.
Malheureusement, si vous ne vérifiez pas le bouton ASP.NET, vous pouvez toujours obtenir le module ManagedEngine dans le fichier IIS applicationHost.config, il ne s'agit donc pas d'une vérification fiable. Vous pouvez également avoir mappé ASP.NET en tant que filtre isapi, donc les vérifier n'est pas suffisant. Ces choses sont particulièrement problématiques dans le cas où ASP.NET a été installé mais a été supprimé.
Il semble que la meilleure solution serait d'examiner les services de rôle. Cependant, les informations sur l'API à ce sujet semblent plutôt rares, d'où le cri d'aide.
S'agit-il d'une application console/Windows Forms ou d'une application IIS? Voulez-vous dire dans un site spécifique ou juste en général? – Kev
La détection provient d'une application WinForms. –
La détection doit être effectuée de manière générale. Fondamentalement, si le service de rôle ASP.NET est supprimé, c'est un paramètre à l'échelle du serveur, je suis après un moyen fiable de détecter cette condition. –