27 votes

Déterminer si ASP.Net est correctement enregistré

Quelqu'un aurait-il un pare-balles de la méthode (en C# parfaitement!) de déterminer si ASP.Net est enregistré correctement sur votre ordinateur ?

Je suis en train d'écrire un programme d'installation pour une ASP.Net application et j'ai besoin de savoir si je devrais courir aspnet_regiis.

Au moment où nous rencontrons toujours aspnet_regiis -je pour vous assurer que ASP.Net est inscrit n'correctement, mais ce souhaitable, car elle suggère un redémarrage de tous les pools d'applications.

Il y a plusieurs pages utiles sur le web (par ex. http://www.codeproject.com/KB/cs/iisdetection.aspxmais comme les commentaires dans ce post, à montrer, c'est très souvent le cas que le registre des rapports que ASP.Net est enregistrée, mais aspnet_regiis doit encore être exécuté pour configurer IIS. L'utilisateur 'JonB' posté quelque chose qui ressemble à un travail pour IIS6 (et IIS7 avec IIS6 compatibilité activé), mais j'ai toujours le besoin d'écrire séparer le code de détection pour IIS 7 avec IIS6 mode de compatibilité désactivé.

Si quelqu'un a craqué cet écrou déjà? Si donc s'il vous plaît laissez-nous savoir comme il va être un gain de temps. Sinon je vais essayer de port le C++ solution en C# pour IIS6 et pour IIS7 je vais regarder exmine l' <isapiCgiRestriction> section de applicationHosts.config pour

<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" autorisé="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />

Une dernière question...

Personne ne sait si les choses sont les mêmes ou différentes dans Windows 7 ?

9voto

Gonzalo Points 11758

Je souhaite tout d'abord essayez d'exécuter aspnet_regiis -lv. Cela devrait vous donner une sortie comme:

1.1.4322.0      Valid           C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
2.0.50727.0     Valid           c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

que vous pouvez facilement analyser pour vérifier que votre version cible est installé et en cours de validité. Si elle n'est pas, vous aurez à aller de l' aspnet_regiis -i route des.

Aussi, étant donné que vous pouvez faire cette vérification en C#, vous pouvez ajouter une page de test pour votre ASP.NET application. Après ce que vous envisagez une installation réussie, faites un HttpWebRequest sur cette page de test. La page elle-même peut être aussi simple qu'une page vide et aussi compliqué que l'exécution d'un auto-contrôle de l'installation (fichier/autorisations de dossier, DB configuration, etc.) et ne renvoie HTTP 200 si tout est ok. Tout dépassement de délai ou d'erreur indique une mauvaise installation. Puis,éventuellement, de supprimer la page de test.

0voto

Learner Points 841

Cet extrait fonctionne pour IIS7 +

 using Microsoft.Web.Administration;   

private static string[] ARR_STR_SUPPORTED_APP_POOLS = 
                         { "ASP.NET v4.0", "ASP.NET v4.5", ".NET v4.5", ".NET v4.0" };

public static ApplicationPool GetFirstSupportedAppPoolInstalled(this ServerManager mgr, IEnumerable<string> supportedAppPools)
{
    ApplicationPool result = null;
    foreach (string appPoolName in supportedAppPools)
    {
        result = mgr.ApplicationPools[appPoolName];
        if (result != null)
            break;
    }
    return result;
}

...
using (var mgr = new ServerManager())
{
   if (!mgr.IISAccessCheck())
      throw new ApplicationException("Error trying to access IIS 7!");

   ApplicationPool appPool = mgr.GetFirstSupportedAppPoolInstalled(ARR_STR_SUPPORTED_APP_POOLS);
   if (appPool == null)
       throw new ApplicationException("No appropriate .NET application pool found!");

   // you can do something with the app pool, if needed
}
...
 

Vous pouvez l'ajuster comme vous le souhaitez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X