Laden...

Bei Updates Webseite abschalten?

Erstellt von noi76 vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.228 Views
N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren
Bei Updates Webseite abschalten?

Hallo,

wir stehen hin und wieder vor dem Problem, dass wir unsere Asp.Net Anwendung aktualisieren müssen, während Anwender damit arbeiten. Prinzipiell kein Problem, die Dateneingaben halten sich in Grenzen. Nur möchten wir die Anwender gern darüber informieren, dass wir ein Update hochladen. Momentan kann es passieren, dass einfach Exceptions kommen, weil der User in seiner Session auf Objekte zugreifen will, die in der alten Anwendung existieren...

Kurzum: Wie kann ich die Webseite am besten dicht machen, während ich einen Upload mache, am besten noch während ich teste, obs auch geht. Idealerweise müsste der User zumindest eine sinnige Meldung sehen.

Schöne Grüße,
Mario

1.457 Beiträge seit 2004
vor 18 Jahren

Ich würde kurzerhand eine neue Index Seite mit dem Hinweis hochladen.

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

Das hilft leider nur bedingt. Die meisten User arbeiten nicht auf der Index-Seite, sondern sind auf irgendeiner untergeordneten Seite.

Schöne Grüße,
Mario

1.457 Beiträge seit 2004
vor 18 Jahren

OK. Verstehe. Werde wahrscheinlich das Problem auch bald haben 🙂

Dann sollte man wahrscheinlich in die Anwendung eine Art Update-Mechanismus einbauen.

Das bedeutet dass du im Admin-Bereich entsprechend auf Update klickst. Nun wird auf jeder Seite ein bool Wert abgefragt. Wenn dieser auf 1 steht, wird der Benutzer weitergeleitet zu einer anderen Seite mit entsprechenden Kommentaren.

Und nun kannst du nach einer gewissen Zeit deine entsprechenden Updates einspielen. Die Index Seite musst du dann natürlich auch erstellen.

Problem ist aber dass bei einem PostBack nicht immer die Seite neu aufgerufen wurde sondern es werden ja wahrscheinlich auch Daten gespeichert, usw.

Also ist diese Lösung auch nicht die Beste. 😦

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

Diese händische Lösung ist eigentlich genau das, wass ich vermeiden wollte 😉 Aber ich habe den Verdacht, dass dazu einfach kein Mechanismus vorhanden ist, weßhalb ich nicht drum rum komme 🙁

Trotzdem danke für die Bestätigung. Ich denke, dass ich einfach zu Beginn eines Uploads eine Datei hochlade. Die kann dann ein Universalcode auch Existenz abfragen, die Session verwerfen und zu einer Default-Seite weiterleiten. Ich muss direkt mal schauen, ob dass nicht in der global.asax oder so geht, dann bräuchte ich es nicht für jede Seite coden...

Schöne Grüße,
Mario

1.457 Beiträge seit 2004
vor 18 Jahren

OK. Wenn du bescheid weißt wie du es anstellt, wäre ich dir dankbar es kurz zu Schildern.

Vielen Dank im Voraus.

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

Also, ich habe es jetzt an einer globalen Stelle (global.asax - BeginRequest) gemacht:

  if &File.Exists(AppPath + 'bin\update.update') and
     (not Request.Url.ToString.EndsWith('WarnUpdate.htm'))
  then begin
    Response.Redirect('WarnUpdate.htm', True);
  end;

Wenn im Bin-Verzeichnis eine Datei gefunden wird, wird automatisch auf die WarnUpdate.htm weitergeleitet. Wichtig ist nur, die aktuelle URL zu prüfen, um sich nicht im Kreis zu schicken 😉 Dann will ich mal hoffen, ob das so tut, lokal im Cassini funktioniert es, aber der IIS im Echtbetrieb ist da ja schon anders. Ich könnte auf die Nase fallen, wenn er unbedingt eine laufende Webanwendung will (genau die gibt es ja nicht). Dann muss ich vielleicht noch auf ein anderes Verzeichnis umleiten. Naja, mal schauen, aber der Weg gefällt mir, weil nur an einer Stelle 🙂

Schöne Grüße,
Mario

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

So, ein bischen Test hier und ein bischen Test da, und siehe da, es war ein Schuß in den Ofen 🙁

Während in den Upload meiner DLL durchführe, ist die Web-App nicht zu gebrauchen. Vom Prinzip her könnte ich nur meine Sperrung setzen, hoffen dass alle User auf der Sperrseite sind, den Upload beginnen und beten das keiner auf die Idee kommt, es in der Zeit nochmal zu versuchen. Dann will der IIS loslegen, obwohl die DLL noch gar nicht voll da ist und das geht natürlich nicht. Von daher, war die Arbeit eigentlich umsonst und im Moment kann ich es nur so lassen und hoffen, dass ich nur selten Updates fahren muss.

Ich könnte nur noch die Webseite im IIS runter nehmen, aber dann sind alle Anwendungen darauf tot 🤔

Falls jemand noch gute Vorschläge hat: Immer her mit X( Es muss doch noch mehr Leute geben, die das Problem haben?

Schöne Grüße,
Mario

N
61 Beiträge seit 2005
vor 18 Jahren

Warum setzt du nicht in der Web.Config den Authentifikations Mode auf Forms?

ungefähr so:
[php]<authentication mode="Forms">
<forms loginUrl="index.aspx" />
</authentication> [/php]
Somit können die Users keine Unterseiten öffnen und werden immer wieder auf die index Seite verwiesen.

Ich hoffe, dass ist das was du meinst.

4.207 Beiträge seit 2003
vor 18 Jahren

Warum umständlich, wenn es auch einfach geht 😉.

Man schalte im IIS die Hostheader von einer auf die andere Webseite um, nehme die alte (zu aktualisierende Seite) offline, überarbeite sie, schalte sie wieder online, und setze die Hostheader zurück.

Programmatischer Aufwand = 0.

Viele Grüße,

der Eisbär

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

Die HostHeader würden dann aber alles umleiten, was auf der Domain liegt? Könntest Du ein kurzes Beispiel geben, wie soetwas aussehen könnte. Bei uns steht bei den Hostheader-Werten als IP immer nur Standard, weil unser Webserver auch nur eine IP hat. Funktioniert dass dann überhaupt?

Schöne Grüße,
Mario

R
70 Beiträge seit 2005
vor 18 Jahren

In ASP.NET 2.0, while you're in the process of updating your site, you can expose a friendly error page by including a file called app_offline.htm in your site's root. If this file exists, all requests to the site will be redirected to this page. The only way to get around this is to delete the file. You can read more about this feature here.

  1. Create a file called App_offline.htm and place it in the root of your target Web site.
  2. Put a friendly message in the App_offline.htm file to let clients know that you are updating the site.

While the App_offline.htm file exists, any request to the Web site will redirect to the file.

Remember to remove the App_offline.htm file after you are finished copying files.

N
noi76 Themenstarter:in
228 Beiträge seit 2005
vor 18 Jahren

Das mit AppOffline freut mich zu hören. Schade dass es erst in 2.0 enthalten ist, darauf können wir im Moment nicht umstellen, da es Delphi einfach nicht hergibt.

Die Lösung mit den Hostheadern klingt darum im Moment am spannendsten, die web.config werde ich aber auch mal versuchen.

Schöne Grüße,
Mario