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?
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?
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.
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();
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 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.