wake-up-neo.com

So können Sie feststellen, ob ASP.NET in aktiviert ist IIS 7

Die Herausforderung besteht darin, zu ermitteln, ob ASP.NET in IIS7 zuverlässig und korrekt aktiviert ist.

Das Aktivieren/Deaktivieren erfolgt in diesem Fall über:

Server Manager -> 
    Roles -> 
        Web Server (IIS) -> 
            Remove Role Services -> 
                Remove ASP.NET

Der natürliche Ort, um dies zu bestimmen, sollte in der Datei applicationHost.config liegen. Bei aktiviertem oder deaktiviertem ASP.NET steht jedoch weiterhin das Modul "ManagedEngine" zur Verfügung, und der Tag enthält den isapi-Filterdatensatz.

Das Beste, was ich im Moment finden kann, ist zu prüfen, ob das Tag <isapiCgiRestriction> die aspnet_isapi.dll enthält oder ob der ASPNET-Ablaufverfolgungsanbieter verfügbar ist.

Diese erkennen jedoch nicht direkt das Vorhandensein der ASP.NET-Konfiguration, sondern lediglich einen Nebeneffekt, der vom Benutzer möglicherweise neu konfiguriert werden kann.

Ich würde dies lieber tun, indem ich die Konfiguration/Konfiguration IIS und nicht das Betriebssystem selbst prüfe, wenn möglich, obwohl das Auflisten der Rollen und Dienste auf dem Server akzeptabel sein könnte, wenn wir garantieren können, dass diese Technik immer funktioniert wann immer IIS7 verwendet wird.

Update

Danke für die Antworten. Um genau zu klären, was ich tun möchte, ziehe ich die Einstellungen von verschiedenen Stellen in der Serverkonfiguration in eine einzige Ansicht (Readonly), um zu zeigen, was der Benutzer konfiguriert haben muss, damit die Software funktioniert.

Eine der Einstellungen, die ich einbringen muss, ist diese: IIS Config showing ASP.NET not installed

Die rot hervorgehobene.

Ich muss die Einstellung nicht manipulieren, sondern nur reproduzieren. Ich möchte sehen, ob der Benutzer das ASP.NET-Kontrollkästchen aktiviert hat, als er dem Server die Rolle IIS hinzugefügt hat, da dies in diesem Beispiel eindeutig nicht der Fall war.

Ich möchte dies tun, indem ich etwas zuverlässiger in IIS anschaue, anstatt die Rollendienste aufzulisten, da ich keine plattformspezifischen Abhängigkeiten von der Überprüfung hinzufügen möchte, die ich nicht benötige. Ich weiß nicht, ob es jemals möglich sein wird, IIS7 auf einem Server zu installieren, der nicht über die Rollen/Dienste-Infrastruktur verfügt, aber ich möchte mir keine Sorgen darüber machen. Ich habe auch eine Menge Bibliotheken zum Abwaschen von IIS.

Ich habe jedoch auch Probleme, herauszufinden, wie die Rollen/Dienste überhaupt aufgezählt werden können. Wenn es also eine Lösung gibt, die dies erfordert, wäre dies sicherlich nützlich und viel besser, als den Nebeneffekt des ASPNET-Trace-Providers zu prüfen herumliegen.

Wenn Sie die ASP.NET-Schaltfläche nicht aktivieren, können Sie das ManagedEngine-Modul leider immer noch in der Datei IIS applicationHost.config abrufen. Daher ist es keine zuverlässige Überprüfung. Sie können ASP.NET auch als Isapi-Filter zuordnen, sodass das Überprüfen der Filter nicht ausreicht. Diese Dinge sind besonders problematisch, wenn ASP.NET installiert, jedoch entfernt wurde.

Es scheint, als wäre die beste Lösung die Überprüfung der Rollendienste. Die API-Informationen dazu sehen jedoch recht selten aus, daher der Hilferuf.

18
Jim T

Der absolute Weg, um herauszufinden, ob sie das geprüft haben oder nicht, besteht darin, den folgenden Registrierungsschlüssel zu durchsuchen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp\Components

Dort sollten Sie zwei Werte sehen, die auf 1 gesetzt sind, ASPNET und NetFxEnvironment und NetFxExtensibility. Dieser Registrierungsschlüssel ist der Setup-Schlüssel IIS, der alle in IIS aktivierten Komponenten enthält.

16

Die Feststellung, ob asp.net sogar eine installierte Funktion ist (Voraussetzung für die Aktivierung), kann über PowerShell ausgeführt werden. Dies bedeutet, dass es .net-APIs gibt, wenn Sie hart genug arbeiten. Die PowerShell-Methoden:

Import-Module servermanager
Get-WindowsFeature web-asp-net

Das gibt ein Objekt vom Typ Microsoft.Windows.ServerManager.Commands.Feature zurück. Die installed-Eigenschaft ist boolean und gibt an, ob das Feature installiert ist oder nicht.

2
sysadmin1138

Willst du den einfachen Weg? Erstellen Sie eine hübsche ASPX-Seite, die als HTML-Datei mit einem Fehlerblock in einem div in einem Platzhalter angezeigt wird und "ASP.NET muss installiert werden" angezeigt werden. Ändern Sie die ASP.NET-Installation auf ASP.NET "und lassen Sie das Tool dann diese Webseite im Standardbrowser starten, nachdem Sie es in das in IIS als *: 80-Site angegebene Verzeichnis kopiert haben (oder erstellen Sie die Verzeichniszuordnung programmgesteuert in IIS indem Sie das XML ändern und es später entfernen) 

Ist vielleicht nicht das eleganteste, aber es stellt sicher, dass beim Testen gezeigt wird, welche Funktionen wirklich installiert sind, und was in einer XML-Datei enthalten ist.


Ich werde Sie daran erinnern, dass der einzige Weg, um in Javascript zu wissen, welche Funktionen ich verwenden kann, darin besteht, sie zu testen, bevor ich sie zu benutzen versuche, oder davon ausgehen, dass sie da sind schau zu, wie es in die Luft geht. Mein Punkt ist, es spielt keine Rolle, was in einer Datei angezeigt wird, es ist wichtig, was Sie tatsächlich verwenden können. Nur weil C:\Windows\Micrsoft.Net\Framework\v3.xxxxxxxx existiert und Dateien enthalten, bedeutet dies nicht, dass die DLLs im GAC registriert sind, oder?

0
jcolebrand