คุณช่วยบอกฉันได้ไหมว่าเกิดอะไรขึ้นเมื่อเราแก้ไข Web.config (ตอนรันไทม์) บนเซิร์ฟเวอร์ IIS
แอปพลิเคชันที่ขึ้นอยู่กับ web.config รีสตาร์ทโดยอัตโนมัติหรือไม่ ถ้าใช่มันเป็นไปได้ที่จะยกเลิกการรีสตาร์ทอัตโนมัติ (หรือโหลด web.config ใหม่)?
คุณช่วยบอกฉันได้ไหมว่าเกิดอะไรขึ้นเมื่อเราแก้ไข Web.config (ตอนรันไทม์) บนเซิร์ฟเวอร์ IIS
แอปพลิเคชันที่ขึ้นอยู่กับ web.config รีสตาร์ทโดยอัตโนมัติหรือไม่ ถ้าใช่มันเป็นไปได้ที่จะยกเลิกการรีสตาร์ทอัตโนมัติ (หรือโหลด web.config ใหม่)?
คำตอบ:
ASP.NET AppDomain จะถูกรีสตาร์ททุกครั้งที่คุณ 'สัมผัส' web.config เป็นไปได้ที่จะปิดการแจ้งเตือนการเปลี่ยนแปลงไฟล์ (FCN) สำหรับโฟลเดอร์ แต่โดยทั่วไปจะไม่ใช่วิธีที่ดีที่สุดหากคุณสามารถช่วยได้ หากคุณปิดใช้งานก็หมายความว่าคุณต้องรีไซเคิลแอพพูลด้วยตนเองเพื่อให้การเปลี่ยนแปลงมีผล
ก่อน IIS7 การเปลี่ยนแปลง ASP.NET เท่านั้นจะทำให้ AppDomain รีไซเคิล แต่ด้วย IIS7 และการตั้งค่าจำนวนมากที่อยู่ใน web.config นี่เป็นปัญหาที่พบบ่อยมากขึ้น เช่นการเปลี่ยนเอกสารเริ่มต้นในตัวจัดการ IIS 7 จะทำให้ AppDomain นั้นรีไซเคิลในขณะนี้
เป็นการดีที่คุณเพียงแค่ต้องลดอัตราการเปลี่ยนแปลงของคุณหรือบางครั้งใช้การเปลี่ยนแปลงกับ applicationHost.config (ซึ่งไม่ได้ทำให้ AppDomain รีไซเคิล) มากกว่า web.config
แอปพลิเคชันที่ใช้ web.config จะรีสตาร์ทเมื่อคุณเปลี่ยนมีข้อมูลเพิ่มเติมที่นี่:
http://msdn.microsoft.com/en-us/library/ms178473.aspx
ฉันไม่รู้วิธีที่จะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ (และฉันไม่แน่ใจว่าทำไมคุณถึงต้องการ - บางทีคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามจะทำ)
FYI - ใน ASP.NET 2.0 คุณสามารถใช้เหตุการณ์การตรวจสอบสุขภาพในตัวเพื่อบันทึกการรีสตาร์ทแอปพลิเคชันพร้อมด้วยเหตุผลในการเริ่มต้นใหม่ สิ่งนี้จะช่วยให้คุณสามารถบันทึกเวลาและความถี่ที่ชัดเจนได้อย่างชัดเจน สิ่งนี้สามารถทำได้โดยการแก้ไข web.config หลักสำหรับเครื่อง
สำหรับข้อมูลเพิ่มเติม:
[เพียงทราบ]
ฉันรู้ว่านี่เป็นรุ่นเก่า แต่ก็ยังสมควรได้รับการกล่าวถึง
Scott Forsyth - คำตอบ MVP ไม่ถูกต้อง
ASP.NET AppDomain จะถูกรีสตาร์ททุกครั้งที่คุณ 'สัมผัส' web.config
นี่เป็นสิ่งที่ผิด
การตอบที่รวดเร็วนั้นเป็นคำตอบที่ถูกต้องและสมบูรณ์ที่สุดเนื่องจากมีลิงก์ไปยัง MSDNที่มีรายละเอียดที่สำคัญหนึ่งอย่าง:
เมื่อต้องการเริ่มต้นแอปพลิเคชันใหม่ ASP.NET จะให้บริการการร้องขอที่ค้างอยู่ทั้งหมดจากโดเมนแอปพลิเคชันที่มีอยู่และแอสเซมบลีเก่าก่อนรีสตาร์ทแอปพลิเคชันโดเมนและโหลดแอสเซมบลีใหม่
สิ่งนี้มีความสำคัญอย่างยิ่งเมื่อเรากำลังพูดถึงบริการทางเว็บ สิ่งนี้บ่งชี้ว่าอาจเป็นการดีที่จะเริ่มต้นใหม่อย่างปลอดภัยในช่วงกลางวัน