ASP.NET 2.0 - Come utilizzare app_offline.htm


120

Ho letto del app_offline.htmfile che può essere inserito nella radice di un'applicazione .NET 2.0 che in sostanza chiuderà l'applicazione e disabiliterà qualsiasi altra pagina da richiedere.

Ho posizionato il file nella root e il mio sito viene ancora caricato. Sono entrato nei documenti predefiniti in IIS e l'ho impostato su app_offline.htme il sito viene comunque caricato (potrebbe essere stato un problema di memorizzazione nella cache)

Ad ogni modo, qualcuno ha riscontrato problemi nell'usarlo? Sto facendo qualcosa di sbagliato?


C'è una pagina Microsoft che lo documenta?
Coops



Ho utilizzato con successo app_offline.htm per nascondere il contenuto della mia app web e visualizzare la pagina temporanea. Tuttavia, ho problemi a rivedere i dati originali anche dopo aver eliminato il file app_offline.htm. La sua è la mia domanda: stackoverflow.com/questions/42979042/...
naz786

Risposte:


160

Ho usato il trucco estremamente utile app_offline.htm per chiudere / aggiornare i siti in passato senza problemi.

Assicurati di mettere effettivamente il file "app_offline.htm" nella "root" del sito web che hai configurato all'interno di IIS.

Assicurati inoltre che il file sia denominato esattamente come dovrebbe essere: app_offline.htm

Oltre a questo, non dovrebbero esserci altre modifiche a IIS da apportare poiché l'elaborazione di questo file (con questo nome specifico) è gestita dal runtime ASP.NET anziché da IIS stesso (per IIS v6).

Tieni presente, tuttavia, che sebbene l'inserimento di questo file nella directory principale del tuo sito costringerà l'applicazione a "chiudere" e visualizzare il contenuto del file "app_offline.htm" stesso, qualsiasi richiesta esistente continuerà a servire il sito web reale a loro. Solo le nuove richieste riceveranno il contenuto app_offline.htm.

Se i problemi persistono, prova i seguenti collegamenti per ulteriori informazioni:

App_Offline.htm di Scott Gu

App_Offline.htm e aggirare la funzione "IE Friendly Errors"

App_offline.htm interromperà le richieste correnti o solo le nuove richieste?


6
@JackM - Nessun problema! In effetti, spesso lascio il file sul mio sito Web e lo chiamo qualcosa come "xapp_offline.htm". Quindi resta lì a non fare niente. Quando voglio aggiornare parte o tutto il sito, rinomino semplicemente il file e rimuovo il prefisso "x" (questo di solito viene fatto tramite FTP). Questo chiude il sito per me, eseguo l'aggiornamento, quindi rinomino il file con il prefisso "x"!
CraigTP

@JackMarchetti - Funzionerà anche per i siti Web ASP.NET MVC che utilizzano il routing global.asax? Ho controllato tutti i suggerimenti qui, ma non ho ancora avuto fortuna a farlo funzionare :(
Squig

Aggiornamento al commento precedente: ora funziona e deve essere stato un problema di memorizzazione nella cache. Avevo usato <CTRL> + Aggiorna, ma presumibilmente veniva memorizzato nella cache da qualche altra parte.
Squig

C'è una pagina Microsoft che lo documenta?
Coops

1
@CodeBlend Ebbene, il link al blog di ScottGu è abbastanza ufficiale, ma suppongo che la pagina più "ufficiale" Microsoft sarebbe questo uno su MSDN: msdn.microsoft.com/en-us/library/vstudio/...
CraigTP

47

Assicurati che il tuo file app_offline.htm sia lungo almeno 512 byte. Un app_offline.htm a zero byte non avrà alcun effetto.

AGGIORNAMENTO: le versioni più recenti di ASP.NET/IIS potrebbero comportarsi meglio di quando l'ho scritto per la prima volta.

AGGIORNAMENTO 2: se si utilizza ASP.NET MVC, aggiungere quanto segue a web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
Avevo il nome esatto del file con un file vuoto e funzionava - pagina vuota visualizzata indipendentemente dall'URL che ho usato
Coops

Controlla questo link per il problema del limite di 512 byte: codeproject.com/Articles/21319/…
Massood Khaari

Questo è vero soprattutto per le versioni precedenti di IE che possono sostituire la pagina con il proprio messaggio di errore
ChewToy

Scott Gu lo descrive anche nel suo blog.
Matt

2
Potevo solo far entrare il mio sito MVC in modalità offline dell'app sostituendo completamente il mio web.config con sopra
Matthew Lock

14

Notare che questo si comporta allo stesso modo su IIS 6 e 7.xe .NET 2, 3 e 4.x.

Tieni inoltre presente che quando è presente app_offline.htm, IIS restituirà questo codice di stato http:

HTTP/1.1 503 Service Unavailable

Questo è tutto in base alla progettazione. Ciò consente al tuo sistema di bilanciamento del carico (o qualsiasi altra cosa) di vedere che il server è offline.


1
Sicuramente non vuoi che il tuo load balancer pensi che il server sia offline, perché vuoi mostrarlo app_offline.htmagli utenti durante la tua finestra di manutenzione?
Luca

2
@Luke: Un esempio migliore del motivo per cui una risposta 503 è utile: è preferibile che il web crawler di Google sappia che il tuo sito web è attualmente inattivo, piuttosto che decidere di indicizzare il contenuto del tuo "sito inattivo" (e contrassegnare il tuo sito con un sacco di duplicati soddisfare). Inoltre, potrebbe essere utile se il tuo CDN è in grado di rilevare che la tua origine non è disponibile e quindi eviterà di memorizzare nella cache i tuoi contenuti.
Brian

10

Possibile problema di autorizzazione

So che questo post è abbastanza vecchio, ma ho riscontrato un problema simile e il mio file è stato digitato correttamente.

Originariamente ho creato il file app_offline.htm in un'altra posizione e poi l'ho spostato nella radice della mia applicazione. A causa della mia configurazione ho avuto un problema di autorizzazioni.

Il sito web si comportava come se non fosse lì. La creazione del file all'interno della directory principale invece di spostarlo, ha risolto il mio problema. (Oppure potresti semplicemente correggere l'autorizzazione in proprietà-> sicurezza)

Spero che aiuti qualcuno.


4

Assicurati che app_offline.htmsi trovi nella radice della directory virtuale o del sito Web in IIS.


È sicuramente nella radice. ho il mio input \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti

3

Assicurati che le estensioni del nome file siano visibili in Esplora risorse e che il nome file sia effettivamente

app_offline.htm

non

app_offline.htm.htm


0

Mi sono imbattuto in un problema molto simile alla domanda originale che mi ha richiesto un po 'di tempo per risolverlo.

Solo nel caso in cui qualcun altro stia lavorando su un'applicazione MVC e trovi la sua strada in questo thread, assicurati di avere una mappatura jolly per il .Net aspnet_isapi.dll definito. Non appena l'ho fatto, il mio app_offline.htm ha iniziato a comportarsi come previsto.


Passaggi di configurazione di IIS 6

In Proprietà applicazione IIS, seleziona la scheda Directory virtuale.

In Impostazioni applicazione, fare clic sul pulsante Configurazione.

In Mappe applicazioni con caratteri jolly, fare clic sul pulsante Inserisci.

Immettere C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, fare clic su OK.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.