ASP.NET 2.0 - วิธีใช้ app_offline.htm


120

ฉันได้อ่านเกี่ยวกับapp_offline.htmไฟล์ที่สามารถวางไว้ในรูทของแอปพลิเคชัน. NET 2.0 ซึ่งโดยพื้นฐานแล้วจะปิดแอปพลิเคชันและปิดการใช้งานหน้าอื่น ๆ จากการร้องขอ

ฉันวางไฟล์ไว้ในรูทแล้วและไซต์ของฉันก็ยังโหลดอยู่ ฉันเข้าไปในเอกสารเริ่มต้นใน IIS และตั้งค่าเป็นapp_offline.htmและไซต์ยังคงโหลดอยู่ (อาจเป็นปัญหาการแคช)

อย่างไรก็ตามมีใครประสบปัญหาในการใช้สิ่งนี้หรือไม่? ฉันทำอะไรผิดหรือเปล่า?


มีหน้า Microsoft ที่จัดทำเอกสารนี้หรือไม่
สุ่ม


เอกสารอย่างเป็นทางการ: msdn.microsoft.com/en-us/library/ff925031.aspx
Brian

ฉันใช้ app_offline.htm สำเร็จเพื่อซ่อนเนื้อหาเว็บแอปของฉันและแสดงหน้าชั่วคราว อย่างไรก็ตามฉันมีปัญหาในการตรวจสอบข้อมูลต้นฉบับแม้ว่าจะลบไฟล์ app_offline.htm แล้วก็ตาม เธอคือคำถามของฉัน: stackoverflow.com/questions/42979042/…
naz786

คำตอบ:


160

ฉันได้ใช้เคล็ดลับ app_offline.htm ที่มีประโยชน์อย่างยิ่งในการปิด / อัปเดตไซต์ในอดีตโดยไม่มีปัญหาใด ๆ

ตรวจสอบให้แน่ใจว่าคุณได้วางไฟล์ "app_offline.htm" ไว้ใน "root" ของเว็บไซต์ที่คุณได้กำหนดค่าไว้ภายใน IIS

ตรวจสอบให้แน่ใจด้วยว่าตั้งชื่อไฟล์ตรงตามที่ควรจะเป็น: app_offline.htm

นอกเหนือจากนั้นไม่ควรมีการเปลี่ยนแปลงอื่น ๆ กับ IIS ที่คุณควรต้องทำเนื่องจากการประมวลผลไฟล์นี้ (ด้วยชื่อเฉพาะนี้) ได้รับการจัดการโดยรันไทม์ ASP.NET แทนที่จะเป็น IIS เอง (สำหรับ IIS v6)

อย่างไรก็ตามโปรดทราบว่าแม้ว่าการวางไฟล์นี้ในรูทของไซต์ของคุณจะบังคับให้แอปพลิเคชัน "ปิด" และแสดงเนื้อหาของไฟล์ "app_offline.htm" เอง แต่คำขอที่มีอยู่จะยังคงได้รับเว็บไซต์จริง ถึงพวกเขา. คำขอใหม่เท่านั้นที่จะได้รับเนื้อหา app_offline.htm

หากคุณยังคงประสบปัญหาให้ลองใช้ลิงก์ต่อไปนี้เพื่อดูข้อมูลเพิ่มเติม:

App_Offline.htm ของ Scott Gu

App_Offline.htm และการแก้ไขคุณลักษณะ "IE Friendly Errors"

app_offline.htm จะหยุดคำขอปัจจุบันหรือเพียงแค่ขอใหม่


6
@JackM - ไม่มีปัญหา! อันที่จริงฉันมักจะทิ้งไฟล์ไว้บนเว็บไซต์และเรียกมันว่า "xapp_offline.htm" มันจึงนั่งเฉยๆไม่ทำอะไรเลย เมื่อฉันต้องการอัปเกรดไซต์บางส่วนหรือทั้งหมดฉันเพียงแค่เปลี่ยนชื่อไฟล์และลบคำนำหน้า "x" (โดยปกติจะทำผ่าน FTP) นี่เป็นการปิดไซต์สำหรับฉันฉันทำการอัพเกรดจากนั้นเปลี่ยนชื่อไฟล์กลับด้วยคำนำหน้า "x"!
CraigTP

@JackMarchetti - สิ่งนี้จะใช้ได้กับเว็บไซต์ ASP.NET MVC ที่ใช้ global.asax Routing หรือไม่ ฉันได้ตรวจสอบคำแนะนำทั้งหมดที่นี่แล้ว แต่ก็ยังไม่มีโชคที่จะใช้งานได้ :(
Squig

อัปเดตความคิดเห็นก่อนหน้า: ตอนนี้ใช้งานได้และต้องมีปัญหาในการแคช ฉันใช้ <CTRL> + รีเฟรช แต่น่าจะถูกแคชไว้ที่อื่น
Squig

มีหน้า Microsoft ที่จัดทำเอกสารนี้หรือไม่
สุ่ม

1
@CodeBlend ลิงก์ไปยังบล็อกของ ScottGu ค่อนข้างเป็นทางการ แต่ฉันคิดว่าหน้า Microsoft ที่ "เป็นทางการ" ที่สุดน่าจะเป็นหน้านี้ใน MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP

47

ตรวจสอบว่าไฟล์ app_offline.htm ของคุณมีความยาวอย่างน้อย 512 ไบต์ app_offline.htm ศูนย์ไบต์จะไม่มีผล

อัปเดต: ASP.NET/IIS เวอร์ชันใหม่กว่าอาจทำงานได้ดีกว่าตอนที่ฉันเขียนครั้งแรก

อัปเดต 2:หากคุณใช้ ASP.NET MVC ให้เพิ่มสิ่งต่อไปนี้ใน web.config:

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

1
ฉันมีชื่อไฟล์ที่แน่นอนพร้อมไฟล์ว่างและใช้งานได้ - หน้าว่างจะแสดงขึ้นโดยไม่คำนึงถึง url ที่ฉันใช้
Coops

ตรวจสอบลิงก์นี้สำหรับปัญหาขีด จำกัด 512 ไบต์: codeproject.com/Articles/21319/…
Massood Khaari

นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งสำหรับ IE เวอร์ชันเก่าซึ่งสามารถแทนที่เพจด้วยข้อความแสดงข้อผิดพลาดของตัวเอง
ChewToy

Scott Gu อธิบายไว้ในบล็อก
Matt

2
ฉันสามารถทำให้ไซต์ MVC ของฉันเข้าสู่โหมดออฟไลน์ของแอปได้โดยแทนที่ web.config ของฉันด้วยด้านบนอย่างสมบูรณ์
Matthew Lock

14

โปรดทราบว่าการทำงานนี้จะเหมือนกันบน IIS 6 และ 7.x และ. NET 2, 3 และ 4.x

โปรดทราบว่าเมื่อ app_offline.htm มีอยู่ IIS จะส่งคืนรหัสสถานะ http นี้:

HTTP/1.1 503 Service Unavailable

ทั้งหมดนี้เกิดจากการออกแบบ สิ่งนี้ช่วยให้ตัวจัดสรรภาระงานของคุณ (หรืออะไรก็ตาม) เห็นว่าเซิร์ฟเวอร์อยู่นอกเส้น


1
แน่นอนคุณไม่ต้องการให้ตัวจัดสรรภาระงานของคุณคิดว่าเซิร์ฟเวอร์ออฟไลน์เพราะคุณต้องการแสดงapp_offline.htmให้ผู้ใช้เห็นในช่วงเวลาการบำรุงรักษา
ลุค

2
@ ลุค: ตัวอย่างที่ดีกว่าว่าเหตุใดการตอบกลับ 503 จึงมีประโยชน์: โปรแกรมรวบรวมข้อมูลเว็บของ Google จะทราบดีว่าขณะนี้เว็บไซต์ของคุณไม่สามารถใช้งานได้แทนที่จะตัดสินใจจัดทำดัชนีเนื้อหา "ไซต์ไม่ทำงาน" ของคุณ (และแจ้งว่าไซต์ของคุณมีเนื้อหาซ้ำกันจำนวนมาก เนื้อหา). นอกจากนี้อาจเป็นประโยชน์หาก CDN ของคุณสามารถตรวจพบว่าต้นทางของคุณไม่ทำงานและจะหลีกเลี่ยงการแคชเนื้อหาของคุณ
Brian

10

ปัญหาการอนุญาตที่เป็นไปได้

ฉันรู้ว่าโพสต์นี้ค่อนข้างเก่า แต่ฉันพบปัญหาที่คล้ายกันและไฟล์ของฉันสะกดถูกต้อง

เดิมฉันสร้างไฟล์ app_offline.htm ในตำแหน่งอื่นแล้วย้ายไปที่รูทของแอปพลิเคชันของฉัน เนื่องจากการตั้งค่าของฉันฉันจึงมีปัญหาเรื่องสิทธิ์

เว็บไซต์ทำราวกับว่ามันไม่มี การสร้างไฟล์ภายในไดเร็กทอรีรากแทนที่จะย้ายไฟล์แก้ไขปัญหาของฉัน (หรือคุณสามารถแก้ไขการอนุญาตในคุณสมบัติ -> ความปลอดภัย)

หวังว่ามันจะช่วยใครบางคน


4

ตรวจสอบให้แน่ใจว่าapp_offline.htmอยู่ในรูทของไดเรกทอรีเสมือนหรือเว็บไซต์ใน IIS


มันแน่นอนอยู่ในรูท ฉันมีอินพุต \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti

3

ตรวจสอบให้แน่ใจว่านามสกุลไฟล์สามารถมองเห็นได้ใน explorer และชื่อไฟล์นั้นเป็นจริง

app_offline.htm

ไม่

app_offline.htm.htm


0

ฉันพบปัญหาที่คล้ายกับคำถามเดิมซึ่งต้องใช้เวลาสักพักในการแก้ไข

ในกรณีที่มีคนอื่นกำลังทำงานกับแอปพลิเคชัน MVC และหาวิธีเข้าสู่เธรดนี้ตรวจสอบให้แน่ใจว่าคุณมีการแมปสัญลักษณ์แทนกับ. Net aspnet_isapi.dll ที่เหมาะสม ทันทีที่ฉันทำสิ่งนี้ app_offline.htm ของฉันก็เริ่มทำงานตามที่คาดไว้


ขั้นตอนการกำหนดค่า IIS 6

บน IIS Application Properties เลือกแท็บ virtual Directory

ภายใต้การตั้งค่าแอปพลิเคชันคลิกปุ่มการกำหนดค่า

ภายใต้แผนที่แอปพลิเคชันสัญลักษณ์ตัวแทนให้คลิกปุ่มแทรก

ป้อน C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll คลิกตกลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.