74 Stimmen

Neustart (Recycling) eines Anwendungspools

Wie kann ich neu starten (recyceln) IIS Application Pool von C# (.net 2)?

Wäre es schön, wenn Sie einen Beispielcode posten würden?

91voto

Nathan Ridley Punkte 32508

Jetzt geht's los:

HttpRuntime.UnloadAppDomain();

61voto

dove Punkte 20015

Wenn Sie auf IIS7 dann wird dies geschehen, wenn es gestoppt wird. Ich nehme an, dass Sie den Neustart einstellen können, ohne dass er angezeigt werden muss.

// Gets the application pool collection from the server.
[ModuleServiceMethod(PassThrough = true)]
public ArrayList GetApplicationPoolCollection()
{
    // Use an ArrayList to transfer objects to the client.
    ArrayList arrayOfApplicationBags = new ArrayList();

    ServerManager serverManager = new ServerManager();
    ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
    foreach (ApplicationPool applicationPool in applicationPoolCollection)
    {
        PropertyBag applicationPoolBag = new PropertyBag();
        applicationPoolBag[ServerManagerDemoGlobals.ApplicationPoolArray] = applicationPool;
        arrayOfApplicationBags.Add(applicationPoolBag);
        // If the applicationPool is stopped, restart it.
        if (applicationPool.State == ObjectState.Stopped)
        {
            applicationPool.Start();
        }

    }

    // CommitChanges to persist the changes to the ApplicationHost.config.
    serverManager.CommitChanges();
    return arrayOfApplicationBags;
}

Wenn Sie auf IIS6 Ich bin mir da nicht so sicher, aber Sie könnten versuchen, die web.config abzurufen und das Änderungsdatum zu bearbeiten oder ähnliches. Sobald die web.config bearbeitet wurde, wird die Anwendung neu gestartet.

11voto

Kaarthikeyan Punkte 420

Die nachstehende Methode wurde sowohl für IIS7 als auch für IIS8 getestet

Schritt 1 : Verweis hinzufügen auf Microsoft.Web.Verwaltung.dll . Die Datei befindet sich unter dem Pfad C:\Windows\System32\inetsrv\ oder installieren Sie es als NuGet-Paket https://www.nuget.org/packages/Microsoft.Web.Administration/

Schritt 2 : Fügen Sie den folgenden Code ein

using Microsoft.Web.Administration;

Verwendung des Null-Bedingungs-Operators

new ServerManager().ApplicationPools["Your_App_Pool_Name"]?.Recycle();

OR

Wenn-Bedingung verwenden, um auf Null zu prüfen

var yourAppPool=new ServerManager().ApplicationPools["Your_App_Pool_Name"];
if(yourAppPool!=null)
    yourAppPool.Recycle();

9voto

8voto

Ricardo Nolde Punkte 31124

Der folgende Code funktioniert mit IIS6. Nicht getestet in IIS7.

using System.DirectoryServices;

...

void Recycle(string appPool)
{
    string appPoolPath = "IIS://localhost/W3SVC/AppPools/" + appPool;

    using (DirectoryEntry appPoolEntry = new DirectoryEntry(appPoolPath))
    {
            appPoolEntry.Invoke("Recycle", null);
            appPoolEntry.Close();
    }
}

Sie können "Recycle" auch durch "Start" oder "Stop" ersetzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X