ASP.NET 2.0 - Cara menggunakan app_offline.htm

120

Saya telah membaca tentang app_offline.htmfile yang dapat ditempatkan di dalam root aplikasi .NET 2.0 yang pada dasarnya akan menutup aplikasi dan menonaktifkan halaman lain dari permintaan.

Saya telah menempatkan file di root, dan situs saya masih dimuat. Saya masuk ke dokumen default di IIS dan mengaturnya ke app_offline.htmdan situs masih memuat (ini mungkin masalah cache)

Bagaimanapun, apakah ada yang mengalami masalah dalam menggunakan ini? Apakah saya melakukan sesuatu yang salah?

Jack Marchetti
sumber
Apakah ada halaman Microsoft yang mendokumentasikan ini?
Coops
Saya telah berhasil menggunakan app_offline.htm untuk menyembunyikan konten aplikasi web saya dan menampilkan halaman sementara. Namun saya mengalami masalah saat meninjau data asli bahkan setelah menghapus file app_offline.htm. Ini pertanyaan saya: stackoverflow.com/questions/42979042/…
naz786

Jawaban:

160

Saya telah menggunakan trik app_offline.htm yang sangat berguna untuk mematikan / memperbarui situs di masa lalu tanpa masalah apa pun.

Pastikan Anda benar-benar menempatkan file "app_offline.htm" di "root" situs web yang telah Anda konfigurasikan dalam IIS.

Juga pastikan bahwa file tersebut dinamai persis seperti yang seharusnya: app_offline.htm

Selain itu, tidak boleh ada perubahan lain pada IIS yang harus Anda lakukan karena pemrosesan file ini (dengan nama khusus ini) ditangani oleh runtime ASP.NET daripada IIS itu sendiri (untuk IIS v6).

Namun, perhatikan bahwa meskipun menempatkan file ini di root situs Anda akan memaksa aplikasi untuk "menutup" dan menampilkan konten file "app_offline.htm" itu sendiri, permintaan apa pun yang ada akan tetap membuat situs web yang sebenarnya disajikan ke mereka. Hanya permintaan baru yang akan mendapatkan konten app_offline.htm.

Jika Anda masih mengalami masalah, coba tautan berikut untuk info lebih lanjut:

App_Offline.htm milik Scott Gu

App_Offline.htm dan bekerja dengan fitur "IE Friendly Errors"

Akankah app_offline.htm menghentikan permintaan saat ini atau hanya permintaan baru?

CraigTP
sumber
6
@JackM - Tidak masalah! Bahkan, saya sering meninggalkan file di situs saya dan menyebutnya sebagai "xapp_offline.htm". Oleh karena itu, ia hanya diam saja. Ketika saya ingin memutakhirkan beberapa atau semua situs, saya cukup mengganti nama file dan menghapus awalan "x" (ini biasanya dilakukan melalui FTP). Ini menutup situs saya, saya melakukan peningkatan, lalu mengganti nama file kembali dengan awalan "x"!
CraigTP
@JackMarchetti - Apakah ini juga akan berfungsi untuk situs web ASP.NET MVC yang menggunakan perutean global.asax? Saya telah memeriksa semua saran di sini tetapi masih belum berhasil
membuatnya
Perbarui ke komentar sebelumnya: Ini berfungsi sekarang dan pasti semacam masalah cache. Saya telah menggunakan <CTRL> + Segarkan, tapi mungkin itu sedang di-cache di tempat lain.
Squig
Apakah ada halaman Microsoft yang mendokumentasikan ini?
Coops
1
@CodeBlend Ya, tautan ke blog ScottGu cukup resmi, tetapi saya kira halaman Microsoft yang paling "resmi" adalah yang ini di MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP
47

Pastikan file app_offline.htm Anda setidaknya berukuran 512 byte. App_offline.htm nol byte tidak akan berpengaruh.

UPDATE: Versi ASP.NET/IIS yang lebih baru mungkin berperilaku lebih baik daripada saat saya pertama kali menulis ini.

UPDATE 2: Jika Anda menggunakan ASP.NET MVC, tambahkan berikut ini ke web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>
Mark Richman
sumber
1
Saya memiliki nama file yang tepat dengan file kosong dan itu berfungsi - halaman kosong ditampilkan terlepas dari url yang saya gunakan
Coops
Cek link ini untuk masalah batas 512 byte: codeproject.com/Articles/21319/...
Mas'ud Khaari
Ini benar terutama untuk versi IE yang lebih lama yang dapat menggantikan halaman dengan pesan kesalahannya sendiri
ChewToy
Scott Gu menggambarkannya juga di blognya.
Matt
2
Saya hanya bisa membuat situs MVC saya masuk ke mode offline aplikasi dengan mengganti web.config saya sepenuhnya dengan di atas
Matthew Lock
14

Perhatikan bahwa ini berperilaku sama di IIS 6 dan 7.x, dan .NET 2, 3, dan 4.x.

Perhatikan juga bahwa ketika app_offline.htm ada, IIS akan mengembalikan kode status http ini:

HTTP/1.1 503 Service Unavailable

Ini semua dengan desain. Ini memungkinkan penyeimbang beban Anda (atau apa pun) untuk melihat bahwa server offline.

Jonesome Kembalikan Monica
sumber
1
Tentunya Anda tidak ingin penyeimbang beban Anda berpikir bahwa server sedang offline, karena Anda ingin menampilkannya app_offline.htmkepada pengguna selama masa pemeliharaan?
Lukas
2
@ Luke: Contoh yang lebih baik tentang mengapa tanggapan 503 bermanfaat: Lebih disukai perayap web Google mengetahui situs web Anda saat ini tidak aktif, daripada memutuskan untuk mengindeks konten "situs tidak aktif" (dan menandai situs Anda sebagai memiliki banyak duplikat kandungan). Selain itu, mungkin berguna jika CDN Anda dapat mendeteksi bahwa asal Anda tidak aktif dan dengan demikian akan menghindari menyimpan konten Anda dalam cache.
Brian
10

Kemungkinan Masalah Izin

Saya tahu posting ini cukup lama, tetapi saya mengalami masalah serupa dan file saya dieja dengan benar.

Saya awalnya membuat file app_offline.htm di lokasi lain dan kemudian memindahkannya ke root aplikasi saya. Karena pengaturan saya, saya kemudian mengalami masalah izin.

Situs web tersebut bertindak seolah-olah tidak ada. Membuat file di dalam direktori root daripada memindahkannya, memperbaiki masalah saya. (Atau Anda bisa memperbaiki izin di properti-> keamanan)

Semoga membantu seseorang.

Jeremy A. West
sumber
4

Pastikan itu app_offline.htmada di root direktori virtual atau situs web di IIS.

Andrew Hare
sumber
Ini pasti di root. saya memiliki inetput \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti
3

Pastikan ekstensi nama file terlihat di explorer dan nama file sebenarnya

app_offline.htm

tidak

app_offline.htm.htm

nPcomp
sumber
0

Saya mengalami masalah yang sangat mirip dengan pertanyaan awal yang membutuhkan waktu beberapa saat untuk saya selesaikan.

Hanya jika orang lain sedang mengerjakan aplikasi MVC dan menemukan jalan mereka ke utas ini, pastikan Anda memiliki pemetaan karakter pengganti ke .Net aspnet_isapi.dll yang sesuai ditentukan. Segera setelah saya melakukan ini, app_offline.htm saya mulai berperilaku seperti yang diharapkan.


Langkah-langkah Konfigurasi IIS 6

Pada IIS Application Properties, pilih tab Direktori virtual.

Di bawah Pengaturan Aplikasi, klik tombol Konfigurasi.

Di bawah peta aplikasi Wildcard, klik tombol Sisipkan.

Masukkan C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, klik OK.

Peter Bernier
sumber