Comment détecter si ASP.NET est activé dans IIS 7
Le défi est de déterminer si ASP.NET est activé dans IIS7 fiable et de façon correcte.
L'activation/la 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 à l'intérieur de la applicationHost.fichier de configuration. Cependant, avec ASP.NET activé ou désactivé, nous avons encore le "ManagedEngine" module disponible, et nous avons encore le filtre isapi enregistrement de la balise.
Le mieux que je puisse trouver à l'heure actuelle est de vérifier si le <isapiCgiRestriction> balise comprend l'aspnet_isapi.dll ou que le RÉSEAU de fournisseur de trace est disponible.
Cependant ce ne sont pas détecter la présence de l'ASP.NET config directement, juste un effet secondaire qui pourrait être reconfiguré par l'utilisateur.
Je préfère le faire en examinant la configuration IIS/installation plutôt que de l'OS lui-même, si possible, bien que l'énumération des Rôles & les Services sur le serveur pourrait être acceptable si l'on peut garantir que cette technique fonctionnera toujours à chaque fois que IIS7 est utilisé.
Mise à jour
Merci pour les réponses. Clarifier exactement ce que je veux faire, je suis en tirant paramètres à partir d'une variété d'endroits dans la configuration du serveur en une seule (readonly) vue de montrer ce que l'utilisateur doit être configuré pour autoriser le logiciel à travailler.
L'un des paramètres que j'ai besoin d'apporter est celui-ci:
L'on a mis en évidence en rouge.
Je n'ai pas besoin de manipuler le réglage, il suffit de le reproduire. Je veux voir si l'utilisateur a coché la ASP.NET boîte quand ils ont ajouté le rôle IIS sur le serveur, comme dans cet exemple il n'a pas clairement.
J'aimerais le faire en regardant quelque chose de fiable dans IIS plutôt que d'énumérer les services de rôle parce que je ne veux pas ajouter n'importe quelle plateforme dépendances spécifiques sur le chèque que je n'ai pas besoin. Je ne sais pas s'il sera jamais possible d'installer IIS7 sur un serveur qui n'a pas les Rôles et les Services d'infrastructure, mais de préférence, je préfère ne pas m'en soucier. J'ai aussi une charge de bibliothèques pour frotter autour de IIS est déjà.
Cependant, je suis également de la difficulté à trouver comment faire pour énumérer les Rôles/Services à tous, donc si il y a une solution qui consiste à faire cela, il serait certainement utile, et beaucoup mieux que la vérification de l'effet secondaire d'avoir le RÉSEAU de fournisseur de trace qui traînent.
Malheureusement, si vous ne cochez pas la ASP.NET bouton, vous pouvez toujours obtenir le ManagedEngine dans le module IIS applicationHost.fichier de config, il n'est donc pas un contrôle fiable. Vous pouvez également avoir ASP.NET mappé comme un filtre isapi, si leur vérification n'est pas suffisant. Ces choses sont particulièrement problématique dans le cas où ASP.NET il a été installé mais a été supprimé.
Il semble que la meilleure solution serait d'examiner le Rôle des Services. Toutefois, l'API informations sur cette recherche est assez rare, d'où l'appel à l'aide.
source d'informationauteur Jim T | 2010-12-14
Vous devez vous connecter pour publier un commentaire.
L'absolu moyen de savoir si ils ont vérifié ou non, est à la recherche de la clé de registre suivante:
Là, vous devriez voir deux valeurs définies à
1
ASPNET
etNetFxEnvironment
etNetFxExtensibility
. Cette clé de registre est l'IIS clé d'Installation qui contient tous les composants qui ont été activés dans IIS.Déterminer si asp.net est encore une fonctionnalité installée (requise pour l'activation) peut être fait via PowerShell, ce qui implique qu'il n'y est .net api là pour elle si vous creusez assez dur. Le PowerShell méthodes:
Qui renvoie un objet de type
Microsoft.Windows.ServerManager.Commands.Feature
. Leinstalled
propriété booléen indique si la fonctionnalité est installée.Alors, voulez-vous facilement? Sympa de faire une jolie .page aspx qui s'affiche en HTML avec une erreur de bloc dans un div dans un espace réservé disant: "Vous avez besoin d'installer le ASP.NET" et l'ont changer sur ASP.NET en cours d'installation au lieu de dire "ASP.NET est installé" et puis il suffit de disposer de l'outil de lancement de cette page web dans le navigateur par défaut après le copier dans le répertoire identifié dans IIS *:80 site (ou créer le répertoire de la cartographie dans IIS par programmation en modifiant le fichier XML et ensuite de l'enlever plus tard)
Peut-être pas la plus élégante, mais elle assure que le test indique quelles sont les caractéristiques sont vraiment installé rapport à ce qui est dans un fichier XML.
Parce que cela va crier "faire le paresseux, ignorants façon", je vais vous rappeler que le seul moyen pour moi de savoir en javascript ce que les caractéristiques que je peux l'utiliser est de les tester avant j'essaie de l'utiliser, ou d'supposons qu'ils sont là et de le regarder blow up. Mon point est, il n'a pas d'importance ce qui est rapporté dans un fichier, ce qui importe est ce que vous pouvez réellement utiliser. Tout simplement parce que C:\Windows\Micrsoft.Net\Framework\v3.xxxxxxxx existe et que les fichiers ne signifie pas que les dll sont inscrits dans le GAC, n'est ce pas?