2009-07-14 12 views
3

Nun, um es einfach zu halten: Ich habe ein Webformular. Darauf ein Knopf namens "Neustart". Ich klicke auf diesen Knopf und IIS startet sich selbst neu.Neustarten einer Website von einer eigenen Webseite

Nun, was wäre der C# -Code, den ich hinter dem OnClick-Ereignis dieser Web-Schaltfläche schreiben müsste? (Wenn es überhaupt möglich ist?)


Dann wird eine zweite Schaltfläche hinzugefügt. Es heißt "Reset" und sollte nur die AppDomain für die aktuelle Webanwendung zurücksetzen. Was wäre der Code dafür?

+0

Was möchten Sie neu starten ... die gesamte IIS-Instanz oder nur diese bestimmte App? –

+0

Eigentlich beides. Es gibt eine andere Anwendung auf demselben IIS-Server, die dazu neigt, Ressourcen zu verbrauchen, ohne sie zu veröffentlichen. Somit behebt ein Neustart dies auf einfache Weise. –

Antwort

11
protected void Reload_Click(object sender, EventArgs e) 
{ 
    HttpRuntime.UnloadAppDomain(); 
} 

protected void Restart_Click(object sender, EventArgs e) 
{ 
    using (var sc = new System.ServiceProcess.ServiceController("IISAdmin")) 
    { 
     sc.Stop(); 
     sc.Start(); 
    } 
} 
+0

Dies scheint eine gute Option zu sein, da es nur Ihre Anwendung und nicht die anderen auf diesem Server gehosteten Anwendungen neu startet. –

1

(http://www.velocityreviews.com/forums/t300488-how-can-i-restart-iis-or-server-from-aspx-page-or-web-service.html)

string processName = "aspnet_wp"; 

System.OperatingSystem os = System.Environment.OSVersion; 

//Longhorn and Windows Server 2003 use w3wp.exe 
if((os.Version.Major == 5 && os.Version.Minor > 1) || os.Version.Major ==6) 
    processName = "w3wp"; 

foreach(Process process in Process.GetProcessesByName(processName)) 
    { 
     Response.Write("Killing ASP.NET worker process (Process ID:" + 
     process.Id + ")"); 
     process.Kill(); 
    } 
+0

Seien Sie vorsichtig, Prozesse wie diese zu töten. Es könnte unerwartete Verhaltensweisen haben. Iisreset.exe wird alle Aufgaben ausführen, die benötigt werden, um die iss neu zu starten, und es macht keinen schweren Abbruch für die aspnet_wp sicher. – Ricardo

3
Process iisreset = new Process(); 
iisreset.StartInfo.FileName = "iisreset.exe"; 
iisreset.StartInfo.Arguments = "computer name"; 
iisreset.Start(); 

//iisreset.exe is located in the windows\system32 folder. 
1

Gibt es mehr als eine Website auf dem Server gehostet, wo dieser Code ausgeführt wird? Wenn dies der Fall ist, möchten Sie vielleicht den System.DirectoryServices-Namespace aufrufen und die einzelne Website neu starten.

+0

Es gibt mehrere Websites, die auf diesem Server gehostet werden, aber die Anwendung, die das Zurücksetzen durchführen kann, soll alle zurücksetzen. Es soll diese anderen Seiten beibehalten. –