คุณช่วยบอกฉันได้ว่าเกิดอะไรขึ้นเมื่อเราแก้ไข Web.config (ขณะรันไทม์) บนเซิร์ฟเวอร์ IIS


11

คุณช่วยบอกฉันได้ไหมว่าเกิดอะไรขึ้นเมื่อเราแก้ไข Web.config (ตอนรันไทม์) บนเซิร์ฟเวอร์ IIS

แอปพลิเคชันที่ขึ้นอยู่กับ web.config รีสตาร์ทโดยอัตโนมัติหรือไม่ ถ้าใช่มันเป็นไปได้ที่จะยกเลิกการรีสตาร์ทอัตโนมัติ (หรือโหลด web.config ใหม่)?


คุณสามารถลองเปิดการตรวจสอบการเข้าถึงไฟล์เพื่อดูว่า IIS อ่าน web.config หลังจากที่คุณแก้ไขหรือไม่
307 Eric

คำตอบ:


10

ASP.NET AppDomain จะถูกรีสตาร์ททุกครั้งที่คุณ 'สัมผัส' web.config เป็นไปได้ที่จะปิดการแจ้งเตือนการเปลี่ยนแปลงไฟล์ (FCN) สำหรับโฟลเดอร์ แต่โดยทั่วไปจะไม่ใช่วิธีที่ดีที่สุดหากคุณสามารถช่วยได้ หากคุณปิดใช้งานก็หมายความว่าคุณต้องรีไซเคิลแอพพูลด้วยตนเองเพื่อให้การเปลี่ยนแปลงมีผล

ก่อน IIS7 การเปลี่ยนแปลง ASP.NET เท่านั้นจะทำให้ AppDomain รีไซเคิล แต่ด้วย IIS7 และการตั้งค่าจำนวนมากที่อยู่ใน web.config นี่เป็นปัญหาที่พบบ่อยมากขึ้น เช่นการเปลี่ยนเอกสารเริ่มต้นในตัวจัดการ IIS 7 จะทำให้ AppDomain นั้นรีไซเคิลในขณะนี้

เป็นการดีที่คุณเพียงแค่ต้องลดอัตราการเปลี่ยนแปลงของคุณหรือบางครั้งใช้การเปลี่ยนแปลงกับ applicationHost.config (ซึ่งไม่ได้ทำให้ AppDomain รีไซเคิล) มากกว่า web.config


4

แอปพลิเคชันที่ใช้ web.config จะรีสตาร์ทเมื่อคุณเปลี่ยนมีข้อมูลเพิ่มเติมที่นี่:

http://msdn.microsoft.com/en-us/library/ms178473.aspx

ฉันไม่รู้วิธีที่จะป้องกันไม่ให้เกิดเหตุการณ์เช่นนี้ (และฉันไม่แน่ใจว่าทำไมคุณถึงต้องการ - บางทีคุณสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่คุณพยายามจะทำ)


3

FYI - ใน ASP.NET 2.0 คุณสามารถใช้เหตุการณ์การตรวจสอบสุขภาพในตัวเพื่อบันทึกการรีสตาร์ทแอปพลิเคชันพร้อมด้วยเหตุผลในการเริ่มต้นใหม่ สิ่งนี้จะช่วยให้คุณสามารถบันทึกเวลาและความถี่ที่ชัดเจนได้อย่างชัดเจน สิ่งนี้สามารถทำได้โดยการแก้ไข web.config หลักสำหรับเครื่อง

สำหรับข้อมูลเพิ่มเติม:

http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx


3

[เพียงทราบ]

ฉันรู้ว่านี่เป็นรุ่นเก่า แต่ก็ยังสมควรได้รับการกล่าวถึง

Scott Forsyth - คำตอบ MVP ไม่ถูกต้อง

ASP.NET AppDomain จะถูกรีสตาร์ททุกครั้งที่คุณ 'สัมผัส' web.config

นี่เป็นสิ่งที่ผิด


การตอบที่รวดเร็วนั้นเป็นคำตอบที่ถูกต้องและสมบูรณ์ที่สุดเนื่องจากมีลิงก์ไปยัง MSDNที่มีรายละเอียดที่สำคัญหนึ่งอย่าง:

เมื่อต้องการเริ่มต้นแอปพลิเคชันใหม่ ASP.NET จะให้บริการการร้องขอที่ค้างอยู่ทั้งหมดจากโดเมนแอปพลิเคชันที่มีอยู่และแอสเซมบลีเก่าก่อนรีสตาร์ทแอปพลิเคชันโดเมนและโหลดแอสเซมบลีใหม่

สิ่งนี้มีความสำคัญอย่างยิ่งเมื่อเรากำลังพูดถึงบริการทางเว็บ สิ่งนี้บ่งชี้ว่าอาจเป็นการดีที่จะเริ่มต้นใหม่อย่างปลอดภัยในช่วงกลางวัน

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