ข้อผิดพลาดเซิร์ฟเวอร์ภายใน HTTP 500 ของ IIS5 เป็นข้อผิดพลาดที่เราพบบ่อย แล้วจะแก้ไขได้อย่างไร วันนี้ฉันจะอธิบายวิธีแก้ปัญหาให้คุณฟังอย่างสมบูรณ์!
ข้อผิดพลาดเซิร์ฟเวอร์ภายใน HTTP 500 ของ IIS5 เป็นหนึ่งในข้อผิดพลาดที่เรามักพบ ข้อผิดพลาดหลักคือโปรแกรม ASP ไม่สามารถเรียกดูได้ แต่หน้าเว็บแบบคงที่ HTM ไม่ได้รับผลกระทบ นอกจากนี้ เมื่อเกิดข้อผิดพลาด บันทึกเหตุการณ์ของระบบและบันทึกเหตุการณ์ด้านความปลอดภัยจะมีบันทึกที่เกี่ยวข้องกัน
รายละเอียดมีดังนี้:
(1) ประสิทธิภาพใน IE
เมื่อเรียกดูหน้า asp ที่เคยทำงานตามปกติ ข้อผิดพลาดต่อไปนี้จะเกิดขึ้น:
ไม่สามารถแสดงหน้าเว็บได้
มีปัญหากับเพจที่คุณพยายามเข้าถึง ดังนั้นจึงไม่สามารถแสดงได้
โปรดลองทำสิ่งต่อไปนี้:
เปิดหน้าแรกของ http://127.0.0.1 และค้นหาลิงก์ไปยังข้อมูลที่คุณต้องการ
คลิกปุ่มรีเฟรชหรือลองอีกครั้งในภายหลัง
HTTP 500 - ข้อผิดพลาดเซิร์ฟเวอร์ภายใน
บริการข้อมูลทางอินเทอร์เน็ต
ข้อมูลทางเทคนิค (บุคคลที่สนับสนุน)
รายละเอียด:
ฝ่ายสนับสนุนของไมโครซอฟต์
หรือ:
ข้อผิดพลาดของแอปพลิเคชันเซิร์ฟเวอร์
เซิร์ฟเวอร์พบข้อผิดพลาดขณะโหลดแอปพลิเคชันระหว่างการประมวลผลคำขอของคุณ โปรดดูบันทึกเหตุการณ์สำหรับข้อมูลรายละเอียดเพิ่มเติม โปรดติดต่อผู้ดูแลระบบเซิร์ฟเวอร์เพื่อขอความช่วยเหลือ
(2) บันทึกบันทึกความปลอดภัย (2 รายการ)
ประเภทเหตุการณ์: การตรวจสอบล้มเหลว
แหล่งที่มาของเหตุการณ์: ความปลอดภัย
ประเภทเหตุการณ์: เข้าสู่ระบบ/ออกจากระบบ
รหัสเหตุการณ์: 529
วันที่: 9-9-2544
กิจกรรม : 11:17:07 น
ผู้ใช้: NT อำนาจ SYSTEM
คอมพิวเตอร์: MYSERVER
อธิบาย:
การเข้าสู่ระบบล้มเหลว:
เหตุผล: ไม่ทราบชื่อผู้ใช้หรือรหัสผ่านผิด
ชื่อผู้ใช้: IWAM_MYSERVER
โดเมน: MYDOM
ประเภทการเข้าสู่ระบบ: 4
กระบวนการเข้าสู่ระบบ: Advapi
แพ็คเกจการรับรองความถูกต้อง: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
ชื่อเวิร์กสเตชัน: MYSERVER
ประเภทเหตุการณ์: การตรวจสอบล้มเหลว
แหล่งที่มาของเหตุการณ์: ความปลอดภัย
ประเภทกิจกรรม: เข้าสู่ระบบบัญชี
รหัสเหตุการณ์: 681
วันที่: 9-9-2544
กิจกรรม : 11:17:07 น
ผู้ใช้: NT อำนาจ SYSTEM
คอมพิวเตอร์: MYSERVER
อธิบาย:
เข้าสู่ระบบบัญชี: IWAM_MYSERVER
ผู้ใช้ที่เข้าสู่ระบบ: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
จากเวิร์กสเตชัน: MYSERVER
ไม่สำเร็จ รหัสข้อผิดพลาดคือ: 3221225578
(3) บันทึกในบันทึกระบบ (2 รายการ)
ประเภทเหตุการณ์: ข้อผิดพลาด
แหล่งที่มาของเหตุการณ์: DCOM
ประเภทเหตุการณ์: ไม่มี
รหัสเหตุการณ์: 10004
วันที่: 9-9-2544
กิจกรรม : 11:20:26 น
ผู้ใช้: ไม่มี
คอมพิวเตอร์: MYSERVER
อธิบาย:
DCOM พบข้อผิดพลาด "ไม่สามารถอัปเดตรหัสผ่านได้ ค่าที่ระบุสำหรับรหัสผ่านใหม่ประกอบด้วยค่าที่ไม่ได้รับอนุญาตในรหัสผ่าน " และไม่สามารถเข้าสู่ระบบเพื่อเรียกใช้เซิร์ฟเวอร์บน .IWAM_MYSERVER:
{3D14228D-FBE1-11D0-995D-00C04FD919C1}
ประเภทเหตุการณ์: คำเตือน
แหล่งที่มาของเหตุการณ์: W3SVC
ประเภทเหตุการณ์: ไม่มี
รหัสเหตุการณ์: 36
วันที่: 9-9-2544
กิจกรรม : 11:20:26 น
ผู้ใช้: ไม่มี
คอมพิวเตอร์: MYSERVER
อธิบาย:
เซิร์ฟเวอร์ล้มเหลวในการจัดเตรียมแอปพลิเคชัน '/LM/W3SVC/4/Root' ข้อผิดพลาดคือ 'RunAs ต้องอยู่ในรูปแบบ <ชื่อโดเมน><ชื่อผู้ใช้> หรือเพียง <ชื่อผู้ใช้>'
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับข้อความนี้ โปรดเยี่ยมชมไซต์ Microsoft Online Support: http://www.microsoft.com/contentredirect.asp
[ตัดหน้า]
การวิเคราะห์ประสิทธิภาพข้อผิดพลาดข้างต้นอย่างครอบคลุม เราจะเห็นว่าข้อผิดพลาดภายใน HTTP 500 ส่วนใหญ่เกิดจากรหัสผ่านที่ไม่ถูกต้องของบัญชี IWAM (ซึ่งก็คือบัญชี IWAM_MYSERVER ในคอมพิวเตอร์ของฉัน)
ก่อนที่จะวิเคราะห์สาเหตุของข้อผิดพลาดภายใน HTTP500 โดยละเอียด เรามาแนะนำบัญชี IWAM กันก่อน: บัญชี IWAM เป็นบัญชีในตัวที่ระบบสร้างขึ้นโดยอัตโนมัติเมื่อติดตั้ง IIS5 ส่วนใหญ่จะใช้เพื่อเริ่มบริการข้อมูลทางอินเทอร์เน็ตสำหรับแอปพลิเคชัน นอกกระบวนการ ชื่อของบัญชี IWAM จะแตกต่างกันไปตามชื่อ NETBIOS ของคอมพิวเตอร์แต่ละเครื่อง รูปแบบทั่วไปคือ IWAM_MACHINE ซึ่งประกอบด้วยคำนำหน้า "IWAM" บรรทัดเชื่อมต่อ "_" และชื่อ NETBIOS ของคอมพิวเตอร์ ชื่อ NETBIOS ของคอมพิวเตอร์ของฉันคือ MYSERVER ดังนั้นชื่อของบัญชี IWAM บนคอมพิวเตอร์ของฉันคือ IWAM_MYSERVER ซึ่งคล้ายกับวิธีการตั้งชื่อของบัญชี IIS ที่ไม่ระบุชื่อ ISUR_MACHINE มาก
หลังจากสร้างบัญชี IWAM แล้ว จะมีการใช้งานร่วมกันโดย Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ รหัสผ่านของบัญชีจะถูกบันทึกโดยบุคคลที่สามตามลำดับ และระบบปฏิบัติการจะรับผิดชอบในการซิงโครไนซ์รหัสผ่าน IWAM ที่บันทึกไว้โดยทั้งสามฝ่าย ฝ่าย ตามสามัญสำนึก เราสามารถมั่นใจได้ว่าระบบปฏิบัติการจะรับผิดชอบต่อการทำงานและไม่ต้องกังวลกับข้อผิดพลาด อย่างไรก็ตาม ไม่ว่าจะเป็นข้อบกพร่องหรือเหตุผลอื่น ๆ บางครั้งการซิงโครไนซ์รหัสผ่านของระบบสำหรับบัญชี IWAM ก็ล้มเหลว ทำให้ รหัสผ่านที่ใช้โดยบัญชี IWAM บุคคลที่สามจะไม่สอดคล้องกัน เมื่อแอปพลิเคชัน IIS หรือ COM+ ใช้รหัสผ่าน IWAM ที่ไม่ถูกต้องเพื่อเข้าสู่ระบบและเริ่มแอปพลิเคชัน IIS Out-Of-Process Pooled ระบบจะปฏิเสธคำขอเนื่องจากรหัสผ่านไม่ถูกต้อง ส่งผลให้แอปพลิเคชัน IIS Out-Of-Process Pooled ไม่สามารถเริ่มต้นได้ เราเห็น "ไม่สามารถเรียกใช้เซิร์ฟเวอร์ {3D14228D-FBE1-11D0-995D-00C04FD919C1}" ในเหตุการณ์ข้อผิดพลาด ID10004 (ที่นี่ {3D14228D-FBE1-11D0-995D-00C04FD919C1} เป็นคีย์ของ IIS ที่ไม่อยู่ในกระบวนการ Pooled Applications) ไม่สามารถถ่ายโอนไปยังแอปพลิเคชัน IIS5 และเกิดข้อผิดพลาดภายใน HTTP 500
เมื่อทราบสาเหตุของข้อผิดพลาดภายใน HTTP 500 วิธีแก้ปัญหาก็ค่อนข้างง่าย ซึ่งก็คือการซิงโครไนซ์รหัสผ่านของบัญชี IWAM ใน Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ ด้วยตนเอง
การดำเนินการเฉพาะแบ่งออกเป็นสามขั้นตอน และคุณต้องเข้าสู่ระบบคอมพิวเตอร์ในฐานะผู้ดูแลระบบเพื่อให้สิทธิ์ในการดำเนินงานที่เพียงพอ (บัญชี IWAM คือ IWAM_MYSERVER เป็นตัวอย่าง)
(1) เปลี่ยนรหัสผ่านของบัญชี IWAM_MYSERVER ใน Active Directory
เนื่องจากรหัสผ่านของบัญชี IWAM ถูกควบคุมโดยระบบและสร้างขึ้นแบบสุ่ม เราจึงไม่รู้ว่ามันคืออะไร เพื่อให้การซิงโครไนซ์รหัสผ่านสองขั้นตอนต่อไปนี้เสร็จสมบูรณ์ เราจะต้องตั้งรหัสผ่านของบัญชี IWAM เป็นค่าที่เรา ทราบ.
1. เลือก "Start" -> "Programs" -> "Administrative Tools" -> "Active Directory Users and Computers" เพื่อเริ่มสแนปอิน "Active Directory Users and Computers"
2. คลิก "ผู้ใช้" เลือก "IWAM_MYSERVER" ทางด้านขวา คลิกขวาและเลือก "รีเซ็ตรหัสผ่าน (T)..." และตั้งรหัสผ่านใหม่สำหรับ IWAM_MYSERVER ในช่องรีเซ็ตรหัสผ่านที่ปรากฏขึ้น ที่นี่เราตั้งค่าไว้ เป็น "Aboutnt2001" (โดยไม่ใส่เครื่องหมายคำพูด) ตกลง รอให้เปลี่ยนรหัสผ่านสำเร็จ
(2) ซิงโครไนซ์รหัสผ่านของบัญชี IWAM_MYSERVER ใน IIS metabase
อาจเป็นเพราะการเปลี่ยนแปลงนี้ละเอียดอ่อนและสำคัญเกินไป Microsoft จึงไม่จัดเตรียมอินเทอร์เฟซผู้ใช้ที่ชัดเจนสำหรับเราในการแก้ไขรหัสผ่านบัญชี IWAM_MYSERVER ใน IIS metabase โดยให้เฉพาะสคริปต์การจัดการ adsutil.vbs กับ IIS5 inetpub ในไดเรกทอรีย่อยของ adminscripts (ตำแหน่งอาจเปลี่ยนแปลงเนื่องจากการตั้งค่าที่แตกต่างกันเมื่อคุณติดตั้ง IIS5)
สคริปต์ adsutil.vbs มีประสิทธิภาพ มีพารามิเตอร์มากมาย และซับซ้อนในการใช้งาน ที่นี่เราจัดเตรียมเฉพาะวิธีการใช้สคริปต์นี้เพื่อแก้ไขรหัสผ่านบัญชี IWAM_MYSERVER:
adsutil SET รหัสผ่าน w3svc/WAMUserPass
พารามิเตอร์ "รหัสผ่าน" คือรหัสผ่านใหม่ของบัญชี IWAM ที่จะตั้งค่า ดังนั้น คำสั่งให้เปลี่ยนรหัสผ่านของบัญชี IWAM_MYSERVER ใน IIS metabase เป็น "Aboutnt2001" คือ:
c:InetpubAdminScripts>adsutil SET w3svc/WAMUserPass "Aboutnt2001"
หลังจากแก้ไขเรียบร้อยแล้ว ระบบจะแจ้งดังนี้:
WAMUserPass: (สตริง) "Aboutnt2001"
(3) รหัสผ่านของ IWAM_MYSERVER ที่ใช้ในการซิงโครไนซ์แอปพลิเคชัน COM+
ในการซิงโครไนซ์รหัสผ่านของ IWAM_MYSERVER ที่ใช้โดยแอปพลิเคชัน COM+ เรามีสองวิธีในการเลือก: วิธีหนึ่งคือการใช้สแน็ปอิน MMC ของบริการส่วนประกอบ และอีกวิธีคือใช้สคริปต์การซิงโครไนซ์บัญชี IWAM synciwam.vbs
1. ใช้หน่วยการจัดการ MMC ของบริการส่วนประกอบ
(1) เริ่มสแนปอินบริการคอมโพเนนต์: เลือก "เริ่ม" -> "เรียกใช้" -> "MMC" เริ่มต้นคอนโซลการจัดการ เปิดกล่องโต้ตอบ "เพิ่ม/ลบสแน็ปอิน" และเพิ่ม "บริการคอมโพเนนต์" " สแน็ปอิน
(2) ค้นหา "บริการส่วนประกอบ" -> "คอมพิวเตอร์" -> "คอมพิวเตอร์ของฉัน" -> "แอปพลิเคชัน COM+" -> "แอปพลิเคชันที่พูลนอกกระบวนการ" คลิกขวาที่ "แอปพลิเคชันที่พูลนอกกระบวนการ" - > "คุณสมบัติ"
(3) สลับไปที่แท็บ "แฟล็ก" ของกล่องโต้ตอบคุณสมบัติ "แอปพลิเคชันที่พูลนอกกระบวนการ" ในการเลือก "แอปพลิเคชันนี้ทำงานภายใต้บัญชีต่อไปนี้" จะมีการเลือก "ผู้ใช้รายนี้" และชื่อผู้ใช้คือ "IWAM_MYSERVER" สิ่งเหล่านี้เป็นค่าเริ่มต้นและไม่จำเป็นต้องเปลี่ยนแปลง ป้อนรหัสผ่านที่ถูกต้อง "Aboutnt2001" ในกล่องข้อความ "รหัสผ่าน" และ "ยืนยันรหัสผ่าน" ด้านล่าง และยืนยันที่จะออก
(4) หากระบบแจ้งว่า "แอปพลิเคชันถูกสร้างขึ้นโดยผลิตภัณฑ์ภายนอกมากกว่าหนึ่งรายการ คุณแน่ใจหรือไม่ว่าต้องการรับการสนับสนุนจากผลิตภัณฑ์เหล่านี้" เพียงยืนยัน
(5) หากเราตั้งค่า "การป้องกันแอปพลิเคชัน" ของเว็บอื่นเป็น "สูง (อิสระ)" ใน IIS รหัสผ่านบัญชี IWAM ของแอปพลิเคชัน COM+ ที่ใช้โดยเว็บนี้ก็จำเป็นต้องซิงโครไนซ์ด้วย ทำซ้ำขั้นตอน (1)-(4) เพื่อซิงโครไนซ์รหัสผ่านบัญชี IWAM ของแอปพลิเคชันที่ไม่อยู่ในกระบวนการอื่นๆ ที่เกี่ยวข้อง
2. ใช้บัญชี IWAM เพื่อซิงโครไนซ์สคริปต์ synciwam.vbs
ในความเป็นจริง Microsoft ได้ค้นพบว่ามีปัญหากับการซิงโครไนซ์รหัสผ่านของบัญชี IWAM ดังนั้นจึงได้เขียนสคริปต์ synciwam.vbs แยกต่างหากสำหรับการซิงโครไนซ์รหัสผ่านบัญชี IWAM ในสคริปต์การจัดการ IIS5 สคริปต์นี้จะอยู่ใน C:inetpubadminscripts ไดเรกทอรีย่อย (ตำแหน่งอาจเป็น มันจะเปลี่ยนแปลงขึ้นอยู่กับการตั้งค่าที่คุณตั้งไว้เมื่อติดตั้ง IIS5)
การใช้สคริปต์ synciwam.vbs ค่อนข้างง่าย:
cscript synciwam.vbs [-v|-h]
พารามิเตอร์ "-v" หมายถึงการแสดงกระบวนการเรียกใช้สคริปต์ทั้งหมดโดยละเอียด (แนะนำ) และพารามิเตอร์ "-h" ใช้เพื่อแสดงข้อมูลวิธีใช้ง่ายๆ
หากเราต้องการซิงโครไนซ์รหัสผ่านของบัญชี IWAM_MYSERVER ในแอปพลิเคชัน COM+ เราจำเป็นต้องดำเนินการ "cscript synciwam.vbs -v" เท่านั้นดังต่อไปนี้:
cscript c:inetpubadminscriptssynciwam.vbs -v
โฮสต์สคริปต์ Microsoft (R) Windows เวอร์ชัน 5.6
ลิขสิทธิ์ (C) Microsoft Corporation 1996-2000 สงวนลิขสิทธิ์.
WamUserName:IWAM_MYSERVER
WamUserPass:Aboutnt2001
แอปพลิเคชัน IIS ที่กำหนด:
ชื่อ, AppIsolated, รหัสแพ็คเกจ
w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}
ราก, 2,
ไอไอเอสช่วยเหลือ, 2,
IISผู้ดูแลระบบ, 2,
IISตัวอย่าง, 2,
มสธ., 2,
รูท, 2,
IISผู้ดูแลระบบ, 2,
ไอไอเอสช่วยเหลือ, 2,
ราก, 2,
ราก, 2,
แอปพลิเคชันที่อยู่นอกกระบวนการที่กำหนดไว้:
นับ: 1
{3D14228D-FBE1-11d0-995D-00C04FD919C1}
การอัปเดตแอปพลิเคชัน:
ชื่อ: คีย์แอปพลิเคชันพูลที่ไม่อยู่ในกระบวนการของ IIS: {3D14228D-FBE1-11D0-995D-00C04FD919C1}
จะเห็นได้จากการดำเนินการของสคริปต์ข้างต้นว่าการใช้สคริปต์ synciwam.vbs มีความครอบคลุมและรวดเร็วกว่าการใช้บริการส่วนประกอบ อันดับแรกจะค้นหาบัญชี IWAM "IWAM_MYSERVER" จากฐานข้อมูล IIS metabase และดึงรหัสผ่านที่เกี่ยวข้อง "Aboutnt2001" จากนั้นค้นหาแอปพลิเคชัน IIS ที่กำหนดไว้ทั้งหมดและแอปพลิเคชันที่ไม่อยู่ในกระบวนการ และซิงโครไนซ์บัญชี IWAM ของแอปพลิเคชันที่ไม่อยู่ในกระบวนการแต่ละรายการทีละรายการ . รหัสผ่าน.
เมื่อใช้สคริปต์ synciwam.vbs สิ่งหนึ่งที่ควรทราบก็คือ ก่อนที่คุณจะรัน synciwam.vbs คุณต้องแน่ใจว่าฐานข้อมูล IIS metabase และรหัสผ่าน IWAM ใน Active Directory นั้นสอดคล้องกัน เนื่องจากสคริปต์ synciwam.vbs ได้รับรหัสผ่านของบัญชี IWAM จากฐานข้อมูล IIS metabase แทนที่จะมาจาก Active Directory ถ้ารหัสผ่านใน IIS metabase ไม่ถูกต้อง รหัสผ่านที่ได้รับจาก synciwam.vbs จะไม่ถูกต้องเช่นกัน และการดำเนินการซิงโครไนซ์ ดำเนินการเพื่อ "อัปเดตแอปพลิเคชัน" ระบบจะรายงานข้อผิดพลาด 80110414 นั่นคือ "ไม่พบแอปพลิเคชัน {3D14228D-FBE1-11D0-995D-00C04FD919C1}"
เอาล่ะ จนถึงตอนนี้ รหัสผ่านของบัญชี IWAM ใน Active Directory, ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ ได้รับการซิงโครไนซ์เรียบร้อยแล้ว และโปรแกรม ASP ของคุณก็สามารถทำงานได้อีกครั้ง!
[ตัดหน้า]การวิเคราะห์ประสิทธิภาพข้อผิดพลาดข้างต้นอย่างครอบคลุม เราจะเห็นว่าข้อผิดพลาดภายใน HTTP 500 ส่วนใหญ่เกิดจากรหัสผ่านที่ไม่ถูกต้องของบัญชี IWAM (ซึ่งก็คือบัญชี IWAM_MYSERVER ในคอมพิวเตอร์ของฉัน)
ก่อนที่จะวิเคราะห์สาเหตุของข้อผิดพลาดภายใน HTTP500 โดยละเอียด เรามาแนะนำบัญชี IWAM กันก่อน: บัญชี IWAM เป็นบัญชีในตัวที่ระบบสร้างขึ้นโดยอัตโนมัติเมื่อติดตั้ง IIS5 ส่วนใหญ่จะใช้เพื่อเริ่มบริการข้อมูลทางอินเทอร์เน็ตสำหรับแอปพลิเคชัน นอกกระบวนการ ชื่อของบัญชี IWAM จะแตกต่างกันไปตามชื่อ NETBIOS ของคอมพิวเตอร์แต่ละเครื่อง รูปแบบทั่วไปคือ IWAM_MACHINE ซึ่งประกอบด้วยคำนำหน้า "IWAM" บรรทัดเชื่อมต่อ "_" และชื่อ NETBIOS ของคอมพิวเตอร์ ชื่อ NETBIOS ของคอมพิวเตอร์ของฉันคือ MYSERVER ดังนั้นชื่อของบัญชี IWAM บนคอมพิวเตอร์ของฉันคือ IWAM_MYSERVER ซึ่งคล้ายกับวิธีการตั้งชื่อของบัญชี IIS ที่ไม่ระบุชื่อ ISUR_MACHINE มาก
หลังจากสร้างบัญชี IWAM แล้ว จะมีการใช้งานร่วมกันโดย Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ รหัสผ่านของบัญชีจะถูกบันทึกโดยบุคคลที่สามตามลำดับ และระบบปฏิบัติการจะรับผิดชอบในการซิงโครไนซ์รหัสผ่าน IWAM ที่บันทึกไว้โดยทั้งสามฝ่าย ฝ่าย ตามสามัญสำนึก เราสามารถมั่นใจได้ว่าระบบปฏิบัติการจะรับผิดชอบต่อการทำงานและไม่ต้องกังวลกับข้อผิดพลาด อย่างไรก็ตาม ไม่ว่าจะเป็นข้อบกพร่องหรือเหตุผลอื่น ๆ บางครั้งการซิงโครไนซ์รหัสผ่านของระบบสำหรับบัญชี IWAM ก็ล้มเหลว ทำให้ รหัสผ่านที่ใช้โดยบัญชี IWAM บุคคลที่สามจะไม่สอดคล้องกัน เมื่อแอปพลิเคชัน IIS หรือ COM+ ใช้รหัสผ่าน IWAM ที่ไม่ถูกต้องเพื่อเข้าสู่ระบบและเริ่มแอปพลิเคชัน IIS Out-Of-Process Pooled ระบบจะปฏิเสธคำขอเนื่องจากรหัสผ่านไม่ถูกต้อง ส่งผลให้แอปพลิเคชัน IIS Out-Of-Process Pooled ไม่สามารถเริ่มต้นได้ เราเห็น "ไม่สามารถเรียกใช้เซิร์ฟเวอร์ {3D14228D-FBE1-11D0-995D-00C04FD919C1}" ในเหตุการณ์ข้อผิดพลาด ID10004 (ที่นี่ {3D14228D-FBE1-11D0-995D-00C04FD919C1} เป็นคีย์ของ IIS ที่ไม่อยู่ในกระบวนการ Pooled Applications) ไม่สามารถถ่ายโอนไปยังแอปพลิเคชัน IIS5 และเกิดข้อผิดพลาดภายใน HTTP 500
เมื่อทราบสาเหตุของข้อผิดพลาดภายใน HTTP 500 วิธีแก้ปัญหาก็ค่อนข้างง่าย ซึ่งก็คือการซิงโครไนซ์รหัสผ่านของบัญชี IWAM ใน Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ ด้วยตนเอง
การดำเนินการเฉพาะแบ่งออกเป็นสามขั้นตอน และคุณต้องเข้าสู่ระบบคอมพิวเตอร์ในฐานะผู้ดูแลระบบเพื่อให้สิทธิ์ในการดำเนินงานที่เพียงพอ (บัญชี IWAM คือ IWAM_MYSERVER เป็นตัวอย่าง)
(1) เปลี่ยนรหัสผ่านของบัญชี IWAM_MYSERVER ใน Active Directory
เนื่องจากรหัสผ่านของบัญชี IWAM ถูกควบคุมโดยระบบและสร้างขึ้นแบบสุ่ม เราจึงไม่รู้ว่ามันคืออะไร เพื่อให้การซิงโครไนซ์รหัสผ่านสองขั้นตอนต่อไปนี้เสร็จสมบูรณ์ เราจะต้องตั้งรหัสผ่านของบัญชี IWAM เป็นค่าที่เรา ทราบ.
1. เลือก "Start" -> "Programs" -> "Administrative Tools" -> "Active Directory Users and Computers" เพื่อเริ่มสแนปอิน "Active Directory Users and Computers"
2. คลิก "ผู้ใช้" เลือก "IWAM_MYSERVER" ทางด้านขวา คลิกขวาและเลือก "รีเซ็ตรหัสผ่าน (T)..." และตั้งรหัสผ่านใหม่สำหรับ IWAM_MYSERVER ในช่องรีเซ็ตรหัสผ่านที่ปรากฏขึ้น ที่นี่เราตั้งค่าไว้ เป็น "Aboutnt2001" (โดยไม่ใส่เครื่องหมายคำพูด) ตกลง รอให้เปลี่ยนรหัสผ่านสำเร็จ
(2) ซิงโครไนซ์รหัสผ่านของบัญชี IWAM_MYSERVER ใน IIS metabase
อาจเป็นเพราะการเปลี่ยนแปลงนี้ละเอียดอ่อนและสำคัญเกินไป Microsoft จึงไม่จัดเตรียมอินเทอร์เฟซผู้ใช้ที่ชัดเจนสำหรับเราในการแก้ไขรหัสผ่านบัญชี IWAM_MYSERVER ใน IIS metabase โดยให้เฉพาะสคริปต์การจัดการ adsutil.vbs กับ IIS5 inetpub ในไดเรกทอรีย่อยของ adminscripts (ตำแหน่งอาจเปลี่ยนแปลงเนื่องจากการตั้งค่าที่แตกต่างกันเมื่อคุณติดตั้ง IIS5)
สคริปต์ adsutil.vbs มีประสิทธิภาพ มีพารามิเตอร์มากมาย และซับซ้อนในการใช้งาน ที่นี่เราจัดเตรียมเฉพาะวิธีการใช้สคริปต์นี้เพื่อแก้ไขรหัสผ่านบัญชี IWAM_MYSERVER:
adsutil SET รหัสผ่าน w3svc/WAMUserPass
พารามิเตอร์ "รหัสผ่าน" คือรหัสผ่านใหม่ของบัญชี IWAM ที่จะตั้งค่า ดังนั้น คำสั่งให้เปลี่ยนรหัสผ่านของบัญชี IWAM_MYSERVER ใน IIS metabase เป็น "Aboutnt2001" คือ:
c:InetpubAdminScripts>adsutil SET w3svc/WAMUserPass "Aboutnt2001"
หลังจากแก้ไขเรียบร้อยแล้ว ระบบจะแจ้งดังนี้:
WAMUserPass: (สตริง) "Aboutnt2001"
(3) รหัสผ่านของ IWAM_MYSERVER ที่ใช้ในการซิงโครไนซ์แอปพลิเคชัน COM+
ในการซิงโครไนซ์รหัสผ่านของ IWAM_MYSERVER ที่ใช้โดยแอปพลิเคชัน COM+ เรามีสองวิธีในการเลือก: วิธีหนึ่งคือการใช้สแน็ปอิน MMC ของบริการส่วนประกอบ และอีกวิธีคือใช้สคริปต์การซิงโครไนซ์บัญชี IWAM synciwam.vbs
1. ใช้หน่วยการจัดการ MMC ของบริการส่วนประกอบ
(1) เริ่มสแนปอินบริการคอมโพเนนต์: เลือก "เริ่ม" -> "เรียกใช้" -> "MMC" เริ่มต้นคอนโซลการจัดการ เปิดกล่องโต้ตอบ "เพิ่ม/ลบสแน็ปอิน" และเพิ่ม "บริการคอมโพเนนต์" " สแน็ปอิน
(2) ค้นหา "บริการส่วนประกอบ" -> "คอมพิวเตอร์" -> "คอมพิวเตอร์ของฉัน" -> "แอปพลิเคชัน COM+" -> "แอปพลิเคชันที่พูลนอกกระบวนการ" คลิกขวาที่ "แอปพลิเคชันที่พูลนอกกระบวนการ" - > "คุณสมบัติ"
(3) สลับไปที่แท็บ "แฟล็ก" ของกล่องโต้ตอบคุณสมบัติ "แอปพลิเคชันที่พูลนอกกระบวนการ" ในการเลือก "แอปพลิเคชันนี้ทำงานภายใต้บัญชีต่อไปนี้" จะมีการเลือก "ผู้ใช้รายนี้" และชื่อผู้ใช้คือ "IWAM_MYSERVER" สิ่งเหล่านี้เป็นค่าเริ่มต้นและไม่จำเป็นต้องเปลี่ยนแปลง ป้อนรหัสผ่านที่ถูกต้อง "Aboutnt2001" ในกล่องข้อความ "รหัสผ่าน" และ "ยืนยันรหัสผ่าน" ด้านล่าง และยืนยันที่จะออก
(4) หากระบบแจ้งว่า "แอปพลิเคชันถูกสร้างขึ้นโดยผลิตภัณฑ์ภายนอกมากกว่าหนึ่งรายการ คุณแน่ใจหรือไม่ว่าต้องการรับการสนับสนุนจากผลิตภัณฑ์เหล่านี้" เพียงยืนยัน
(5) หากเราตั้งค่า "การป้องกันแอปพลิเคชัน" ของเว็บอื่นเป็น "สูง (อิสระ)" ใน IIS รหัสผ่านบัญชี IWAM ของแอปพลิเคชัน COM+ ที่ใช้โดยเว็บนี้ก็จำเป็นต้องซิงโครไนซ์ด้วย ทำซ้ำขั้นตอน (1)-(4) เพื่อซิงโครไนซ์รหัสผ่านบัญชี IWAM ของแอปพลิเคชันที่ไม่อยู่ในกระบวนการอื่นๆ ที่เกี่ยวข้อง
2. ใช้บัญชี IWAM เพื่อซิงโครไนซ์สคริปต์ synciwam.vbs
ในความเป็นจริง Microsoft ได้ค้นพบว่ามีปัญหากับการซิงโครไนซ์รหัสผ่านของบัญชี IWAM ดังนั้นจึงได้เขียนสคริปต์ synciwam.vbs แยกต่างหากสำหรับการซิงโครไนซ์รหัสผ่านบัญชี IWAM ในสคริปต์การจัดการ IIS5 สคริปต์นี้จะอยู่ใน C:inetpubadminscripts ไดเรกทอรีย่อย (ตำแหน่งอาจเป็น มันจะเปลี่ยนแปลงขึ้นอยู่กับการตั้งค่าที่คุณตั้งไว้เมื่อติดตั้ง IIS5)
การใช้สคริปต์ synciwam.vbs ค่อนข้างง่าย:
cscript synciwam.vbs [-v|-h]
พารามิเตอร์ "-v" หมายถึงการแสดงกระบวนการเรียกใช้สคริปต์ทั้งหมดโดยละเอียด (แนะนำ) และพารามิเตอร์ "-h" ใช้เพื่อแสดงข้อมูลวิธีใช้ง่ายๆ
หากเราต้องการซิงโครไนซ์รหัสผ่านของบัญชี IWAM_MYSERVER ในแอปพลิเคชัน COM+ เราจำเป็นต้องดำเนินการ "cscript synciwam.vbs -v" เท่านั้นดังต่อไปนี้:
cscript c:inetpubadminscriptssynciwam.vbs -v
โฮสต์สคริปต์ Microsoft (R) Windows เวอร์ชัน 5.6
ลิขสิทธิ์ (C) Microsoft Corporation 1996-2000 สงวนลิขสิทธิ์.
WamUserName:IWAM_MYSERVER
WamUserPass:Aboutnt2001
แอปพลิเคชัน IIS ที่กำหนด:
ชื่อ, AppIsolated, รหัสแพ็คเกจ
w3svc, 0, {3D14228C-FBE1-11d0-995D-00C04FD919C1}
ราก, 2,
ไอไอเอสช่วยเหลือ, 2,
IISผู้ดูแลระบบ, 2,
IISตัวอย่าง, 2,
มสธ., 2,
รูท, 2,
IISผู้ดูแลระบบ, 2,
ไอไอเอสช่วยเหลือ, 2,
ราก, 2,
ราก, 2,
แอปพลิเคชันที่อยู่นอกกระบวนการที่กำหนดไว้:
นับ: 1
{3D14228D-FBE1-11d0-995D-00C04FD919C1}
การอัปเดตแอปพลิเคชัน:
ชื่อ: คีย์แอปพลิเคชันพูลที่ไม่อยู่ในกระบวนการของ IIS: {3D14228D-FBE1-11D0-995D-00C04FD919C1}
จะเห็นได้จากการดำเนินการของสคริปต์ข้างต้นว่าการใช้สคริปต์ synciwam.vbs มีความครอบคลุมและรวดเร็วกว่าการใช้บริการส่วนประกอบ อันดับแรกจะค้นหาบัญชี IWAM "IWAM_MYSERVER" จากฐานข้อมูล IIS metabase และดึงรหัสผ่านที่เกี่ยวข้อง "Aboutnt2001" จากนั้นค้นหาแอปพลิเคชัน IIS ที่กำหนดไว้ทั้งหมดและแอปพลิเคชันที่ไม่อยู่ในกระบวนการ และซิงโครไนซ์บัญชี IWAM ของแอปพลิเคชันที่ไม่อยู่ในกระบวนการแต่ละรายการทีละรายการ . รหัสผ่าน.
เมื่อใช้สคริปต์ synciwam.vbs สิ่งหนึ่งที่ควรทราบก็คือ ก่อนที่คุณจะรัน synciwam.vbs คุณต้องแน่ใจว่าฐานข้อมูล IIS metabase และรหัสผ่าน IWAM ใน Active Directory นั้นสอดคล้องกัน เนื่องจากสคริปต์ synciwam.vbs ได้รับรหัสผ่านของบัญชี IWAM จากฐานข้อมูล IIS metabase แทนที่จะมาจาก Active Directory ถ้ารหัสผ่านใน IIS metabase ไม่ถูกต้อง รหัสผ่านที่ได้รับจาก synciwam.vbs จะไม่ถูกต้องเช่นกัน และการดำเนินการซิงโครไนซ์ ดำเนินการเพื่อ "อัปเดตแอปพลิเคชัน" ระบบจะรายงานข้อผิดพลาด 80110414 นั่นคือ "ไม่พบแอปพลิเคชัน {3D14228D-FBE1-11D0-995D-00C04FD919C1}"
เอาล่ะ จนถึงตอนนี้ รหัสผ่านของบัญชี IWAM ใน Active Directory, ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ ได้รับการซิงโครไนซ์เรียบร้อยแล้ว และโปรแกรม ASP ของคุณก็สามารถทำงานได้อีกครั้ง!