ฉันมีเว็บไซต์ที่มีการล็อคพิเศษในทรัพยากรบางอย่าง ฉันใช้. NET Application_Start และ Application_End เหตุการณ์เพื่อรับและปล่อยการล็อกทรัพยากรเหล่านี้ในเวลาที่เหมาะสม เพื่อให้ทำงานได้อย่างถูกต้องจะมีเพียงหนึ่งอินสแตนซ์ของแอปพลิเคชันของฉันที่ทำงานในเวลาที่กำหนด
ที่จะได้รับนี้จะเกิดขึ้นฉันได้ตั้งค่าทรัพย์สินในสระว่ายน้ำของโปรแกรมประยุกต์เพื่อDisable Overlapped Recycle
True
คุณสมบัตินี้ควรให้แน่ใจว่ากระบวนการของผู้ปฏิบัติงานเก่าจะปิดตัวลงอย่างสมบูรณ์ก่อนที่จะเริ่มกระบวนการใหม่เมื่อใดก็ตามที่กลุ่มแอพนั้นถูกรีไซเคิล สิ่งนี้จะทำงานได้ดีทุกครั้งที่มีการรีไซเคิลแอพด้วยตนเองผ่าน IIS โดยอัตโนมัติตามผลลัพธ์ของการไม่ได้ใช้งานเวลาว่างหรือโดยอัตโนมัติตามกฎเวลา / ช่วงเวลาที่เฉพาะเจาะจง
อย่างไรก็ตามเมื่อ web.config สำหรับไซต์ได้รับการอัปเดตกฎนี้จะไม่ถูกนำมาใช้ - กระบวนการของผู้ปฏิบัติงานใหม่จะเริ่มขึ้นก่อนที่กระบวนการเก่าจะเสร็จสิ้น สิ่งนี้ทำให้สิ่งเลวร้ายเกิดขึ้น ฉันได้Disable Recycling for Configuration Changes
ตั้งค่าคุณสมบัติFalse
เป็นฉันต้องการให้กลุ่มแอพนำกลับมาใช้ใหม่เมื่อมีการอัปเดต web.config - สิ่งนี้เกิดขึ้นบ่อยครั้งในระหว่างการพัฒนา
นี่เป็นสิ่งที่คาดหวังหรือเป็นข้อผิดพลาดใน IIS ตัวเลือกเดียวของฉันคือการตั้งค่าเพื่อให้การเปลี่ยน web.config ไม่ได้นำแอพพูลกลับมาใช้ใหม่ ฉันไม่อยากทำอย่างนี้เพราะฉันค่อนข้างแน่ใจว่ามันจะทำให้เกิดอาการปวดหัวกับผู้คนที่เปลี่ยนการกำหนดค่าแล้วลืมรีไซเคิลแอพพูล
ปรับปรุง:
เพื่อความชัดเจนมากขึ้นเมื่อstart
มีการเรียกเหตุการณ์กระบวนการของผู้ปฏิบัติงานใหม่ก่อนที่กระบวนการของผู้ปฏิบัติงานเก่าจะปิดตัวลงดังนั้นend
กิจกรรมกระบวนการของผู้ปฏิบัติงานเก่าจะไม่ถูกเรียก - มันไม่ได้เกิดขึ้นตามลำดับมันไม่เคยเกิดขึ้นเลย