Kami memiliki server IIS yang menampung ratusan aplikasi web yang terpisah, dan server basis data fisik yang menampung aplikasi-aplikasi ini akan dimatikan untuk pemeliharaan untuk jangka waktu yang singkat (kami memperkirakan akan membutuhkan waktu kurang dari 15 menit).
Selama periode itu, kami ingin mengarahkan SEMUA lalu lintas yang masuk, untuk situs web mana pun, ke halaman "kami sedang menjalani pemeliharaan".
Saya menyadari bahwa saya dapat melakukan ini dengan membuka setiap aplikasi web, dan menyiapkan aturan penulisan ulang IIS yang mengirim pengguna ke halaman lain untuk semua permintaan dalam aplikasi itu. Tapi, kita butuh waktu lebih lama untuk melakukan itu daripada melakukan pemeliharaan basis data!
Saya sudah mencoba tiga hal, tidak ada yang berhasil:
Aturan Penulisan Ulang IIS Global
Saya telah mencari cara sederhana untuk menerapkan aturan ke semua situs, dalam satu gerakan - dan kemudian dapat "membatalkan" aturan itu dalam satu langkah yang sama-sama tidak menyakitkan. Sejauh ini, tidak ada upaya saya yang berhasil. Saya memang mencoba meletakkan aturan penulisan ulang ini di web.config global saya di W: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="redirect all requests" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Redirect" url="http://www.somedomain.com/maintenance" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Ini tidak berhasil. Kami sedang menjalankan .NET 4.0 64 bit di IIS, tetapi "untuk berjaga-jaga" saya meletakkan hal yang sama pada 32 bit dan 2.0 file web.config global, dan masih tidak ada perubahan.
App_Offline.htm "file khusus"
Satu saran lain yang pernah saya lihat adalah file "khusus" app_offline.htm , tapi kami kembali ke masalah yang sama dengan waktu yang lebih lama untuk menyebarkan file ini ke root aplikasi semua aplikasi kami daripada benar-benar melakukan pemeliharaan.
Situs "Kami sedang offline" di IIS
Semua situs kami diatur dalam IIS dengan satu IP. Ini bekerja untuk kami bahkan tanpa SNA karena semua aplikasi kami berbagi satu sertifikat SSL (ini adalah UCC). Satu hal yang terpikir oleh saya adalah mungkin saya dapat mengatur situs di IIS yang cocok dengan semua lalu lintas ke IP yang kami gunakan, dan tidak menentukan nilai header host. Harapannya adalah bahwa saya bisa memberikan "prioritas" yang lebih tinggi dan bahwa, ketika dimulai, akan cocok dengan semua lalu lintas ke IP itu, sebelum ada situs lain yang memiliki kesempatan untuk mencocokkan. Saya dapat mengatur situs itu untuk melayani halaman yang sama untuk semua permintaan, terlepas dari URL permintaan.
Mulai situs itu saat menjalani pemeliharaan, dan hentikan ketika selesai.
Tapi, saya juga tidak bisa mendapatkan ini berfungsi, karena IIS tampaknya cocok dengan permintaan HTTP ke situs yang lebih spesifik sebelum kurang spesifik. Jadi, dengan menghilangkan nilai header-host untuk situs "beri tahu pengguna kami offline", itu tidak cocok kecuali permintaan tersebut tidak memiliki nilai header-host yang cocok dengan situs lain. Yang menempatkan kita kembali pada masalah yang sama karena harus secara manual pergi ke setiap aplikasi web dan melakukan tindakan untuk membuatnya offline dan kemudian mengembalikannya secara online ketika kita selesai dengan pemeliharaan
Apakah ada cara sederhana untuk mencapai ini? Tampaknya kita bukan yang pertama kali menghadapi masalah ini.
-Ya