2009-07-03 8 views
28

Czy ktoś ma metodę kuloodporne (w języku C# idealnie!) Ustalania, czy ASP.Net jest poprawnie zarejestrowany na komputerze?Określanie, czy ASP.Net jest poprawnie zarejestrowany

Piszę program instalacyjny dla aplikacji ASP.Net i muszę wiedzieć, czy powinienem uruchomić aspnet_regiis.

W tej chwili zawsze uruchamiamy aspnet_regiis - I, aby upewnić się, że ASP.Net jest poprawnie zarejestrowany, ale jest to niepożądane, ponieważ powoduje ponowne uruchomienie wszystkich pul aplikacji.

Istnieje kilka przydatnych stron w sieci (np http://www.codeproject.com/KB/cs/iisdetection.aspx) ale jako komentarzach w tym wątku show, jest to dość często zdarza się, że donosi rejestru, który jest zarejestrowany ASP.Net ale aspnet_regiis nadal musi być uruchomiony, aby skonfigurować IIS. Użytkownik "JonB" opublikował coś, co wygląda na to, że powinno działać dla IIS6 (i IIS7 z włączoną kompatybilnością IIS6), ale nadal potrzebowałbym napisać osobny kod wykrywania dla IIS 7 z wyłączonym trybem zgodności IIS6.

Czy ktoś już złamał tę nakrętkę? Jeśli tak, daj nam znać, ponieważ będzie to oszczędność czasu. W przeciwnym razie będę próbować i Port ++ Roztwór C do C# dla IIS6 i IIS7 będę wyglądać zbadać sekcję <isapiCgiRestriction> z applicationHosts.config dla

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

ostatnie pytanie ...

Czy ktoś wie, czy rzeczy są takie same/inny w Windows 7?

Odpowiedz

10

Najpierw spróbowałbym uruchomić aspnet_regiis -lv. Powinno to dać wynik podobny do:

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 

, który można łatwo przeanalizować w celu sprawdzenia, czy wersja docelowa jest zainstalowana i ważna. Jeśli tak nie jest, musisz udać się na trasę aspnet_regiis -i.

Ponadto, biorąc pod uwagę, że można to sprawdzić w języku C#, można dodać stronę testową do aplikacji ASP.NET. Po tym, co zwykle uważasz za udaną instalację, wykonaj HttpWebRequest na tej stronie testowej. Sama strona może być tak prosta jak pusta strona i tak skomplikowana, jak uruchomienie samodzielnej kontroli instalacji (uprawnienia do plików/folderów, konfiguracja bazy danych itp.) I zwróci komunikat HTTP 200 tylko wtedy, gdy wszystko będzie w porządku. Każdy limit czasu lub błąd wskazuje na złą instalację. Następnie opcjonalnie usuń stronę testową.

0

Ten fragment pracuje dla 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 
} 
... 

można dostosować go jak chcesz.

Powiązane problemy