Frage

Gibt es eine empfohlene Weg, um eine asp.net Anwendung auf die Beine neben web.config aus dem Inneren der Anwendung zu berühren? HttpRuntime.UnloadAppDomain() ist; der bevorzugte Weg, dies zu tun? und wenn ja, wo Sie dies tun? Im Entladen einer Seite oder einem anderen Ort in der Anwendung?

War es hilfreich?

Lösung

Wenn die .NET 2.0 oder höher, dann können Sie in einer „app_offline.htm“ Datei hinzufügen, stellen Sie eine Anfrage an den Server, entfernen, und dann eine erneute Anfrage an den Server.

Diese Abfolge von Ereignissen wird ASP.NET zwingen, die Anwendung, solange die app_offline.htm Datei vorhanden in dem Ordner zu entladen.

Scott Guthrie Blog-Eintrag auf sie: http://weblogs.asp.net/scottgu/archive/2005 /10/06/426755.aspx

Andere Tipps

Berühren web.config aus innerhalb einer Anwendung ist eine schlechte Idee, IMO. Auch die Idee, eine Datei zu haben, die Sie ändern ist ein wenig Hackney, IMO.

Die Dokumentation ausdrücklich bestimmt, dass UnloadAppDomain wird die Anwendung herunterzufahren:

  

UnloadAppDomain ermöglicht programmatische Abschaltung nicht genutzter Anwendungen.

Es soll möglich sein, diesen Anruf überall in der Anwendung zu machen. Wohlgemerkt, man könnte Sie auf SecurityException , so machen sicher, dass die Laufzeit Sie die entsprechenden Berechtigungen gibt (Sie können diese in einer Bibliothek setzen und einen Anruf tätigen und dann die Bibliothek festgelegt mit dem Nachweis im GAC bis es voll Vertrauen geben).

Dieser Code Arbeit für mich. nur es nennt Anwendung neu zu laden.

System.Web.HttpRuntime.UnloadAppDomain();

mehr Lesen

  

Diese Methode wird nur unsere Anwendung entladen. Wenn Sie nur diese Methode in einer Schaltfläche ASP.NET Web gestellt werden Sie völlig fertig. Wann wird unsere Anwendung neu geladen? Eigentlich, wenn Sie Ihre Schaltfläche klicken, wird es zuerst unsere Methode starten und die Anwendung entladen. Weitere auf der Webseite wir in diesem Moment sind wird auch wieder geladen werden, da wir nur aktualisieren Sie eine Taste und die Webseite sollte angeklickt. unsere Methode, um die Aktualisierung der Seite Prozess Nach dem Start führt dazu, dass unsere Anwendung als auch neu zu laden.

Sie können stoppen und den Anwendungs-Pool mit der App auch im Zusammenhang starten.

Sie können dies durch den Aufruf der HttpRuntime.ShutdownAppDomain Methode (Sie müssen Reflexion verwenden, um es zu berufen, da es sich um eine private statische Methode)

Siehe Wie ein IIS-Arbeitsprozess neu zu starten programmatisch (dh Abschaltung des Strom ASP.NET Domain) für ein Beispiel dafür, wie ich diese Methode in einem ‚Neustart‘ REST API

Sie könnten sicher eine Web-Anwendung neu starten, indem erstellen oder einen Ordner zur Laufzeit unter dem Anwendungsverzeichnis umbenennen. Natürlich müssen Sie den Benutzer geben zugewiesen die Anwendung „ändern“ Rechte auf das Web-Verzeichnis oder ein Unterverzeichnis unter es auszuführen.

das Verfahren erwähnt bei http://www.bartlannoeye.be/ Blog / Neustart-a-.net-Web-Applikation-ohne-Neustart-iis

Ich habe den folgenden Code in meinem Fall zu tun. Ändern Sie es auf einem „beschreibbaren“ Unterverzeichnis arbeiten

protected void RestartButton_Click(object sender, EventArgs e)
{
    //restart web app (instead of iisreset)
    DirectoryInfo dir = new DirectoryInfo(Server.MapPath("restart"));
    if (dir.Exists)
    {
        Directory.Move(dir.FullName, dir.FullName + "ed");
    }
    else
    {
        DirectoryInfo dired = new DirectoryInfo(Server.MapPath("restarted"));
        if (dired.Exists)
        {
            Directory.Move(dired.FullName, dir.FullName);
        }
        else
        {
            Directory.CreateDirectory(dir.FullName);
        }
    }
}

Wenn Sie nicht möchten, dass der App-Pool stoppen und starten Sie es immer recyceln können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top