เมื่อเข้าถึงเพจ asp ระบบจะแจ้งข้อผิดพลาดวัตถุตอบสนอง ASP 0156: 80004005 ข้อผิดพลาดส่วนหัว HTTP หรือไม่ บรรทัด 0 ได้ส่งออกส่วนหัว HTTP ไปยังเบราว์เซอร์ไคลเอ็นต์ จะต้องแก้ไขส่วนหัว HTTP ก่อนที่จะส่งออกเนื้อหาของหน้า
ที่จริงแล้วปัญหาประเภทนี้เกิดจากปัญหาแคช คุณสามารถอ้างถึงวิธีการต่อไปนี้เพื่อแก้ไข:
เพจ ASP บางเพจจะมีข้อผิดพลาดออบเจ็กต์การตอบสนอง 'ASP 0156: 80004005' และข้อผิดพลาดส่วนหัว HTTP เมื่อเปิดขึ้นเป็นครั้งแรก แต่จะเป็นเรื่องปกติอีกครั้งหลังจากรีเฟรช วิธีแก้ไขมีดังนี้
คัดลอกรหัสรหัสดังต่อไปนี้:
Response.Buffer = จริง
'มันควรจะเป็นบรรทัดนี้ มันจะโอเคถ้าคุณลบมันออก'
'ถ้ามันไม่ได้ผลก็แค่
Response.Buffer = จริง
Response.ExpiresAbsolute = ตอนนี้() - 1
การตอบกลับหมดอายุ = 0
Response.CacheControl = "ไม่มีแคช"
Response.AddHeader "Pragma", "ไม่มีแคช"
'ลบออกทั้งหมด สิ่งนี้ใช้เพื่อไม่ให้แคชเพจ การลบออกไม่ควรส่งผลกระทบต่อเว็บไซต์
ข้อผิดพลาดนี้เกิดขึ้นเนื่องจากเว็บเซิร์ฟเวอร์ใช้ส่วนหัว HTTP เพื่อตั้งค่าเบราว์เซอร์ไคลเอ็นต์ เว็บเซิร์ฟเวอร์แล้วพยายามที่จะรีเซ็ตเบราว์เซอร์ของไคลเอ็นต์โดยใช้ส่วนหัว HTTP เพิ่มเติม (ตัวอย่างเช่น เมื่อมีการออกส่วนหัว HTTP หลังจากที่เบราว์เซอร์ตั้งค่าประเภทเนื้อหา = text/html) ตัวอย่างคือเมื่อประมวลผลเพจ ASP ก่อนที่จะรวมแท็ก HTML หรือคำสั่ง Response.Redirect สคริปต์ฝั่งเซิร์ฟเวอร์อื่น ๆ
หมายเหตุ สิ่งนี้สามารถเกิดขึ้นได้หากคุณอัพเกรดคอมพิวเตอร์ที่กำลังเรียกใช้ Microsoft Windows NT 4.0 เป็น Microsoft Windows Server 2003
ตัวอย่างคือเมื่อประมวลผลเพจ ASP ก่อนที่จะรวมแท็ก HTML หรือคำสั่ง Response.Redirect สคริปต์ฝั่งเซิร์ฟเวอร์อื่น ๆ
คุณสมบัติและวิธีการต่อไปนี้ของ ASP สำหรับวัตถุการตอบสนองเขียนส่วนหัว HTTP:
การตอบสนองAddHeader
การตอบสนองการควบคุมแคช
การตอบสนอง CharSet
การตอบสนองContentType
การตอบสนองหมดอายุ
การตอบสนองหมดอายุแน่นอน
การตอบสนองการเปลี่ยนเส้นทาง
การตอบกลับสถานะ
กลับไปด้านบน
สารละลาย
เพื่อแก้ไขปัญหานี้ ให้ตั้งค่าส่วนหัว HTTP เช่น คำสั่งเปลี่ยนเส้นทางหรือข้อมูลคุกกี้ก่อนที่จะส่งเอาต์พุต HTML
ตัวอย่างเช่น เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ด้วยการเปลี่ยนเส้นทาง ให้จำกัดบัฟเฟอร์หรือการประมวลผลของเพจ ASP จากนั้นจึงออกการเปลี่ยนเส้นทางหลังการประมวลผล มีสองวิธีในการบัฟเฟอร์ให้สำเร็จ: ที่ระดับเพจหรือที่ระดับแอปพลิเคชัน
โปรดทราบว่าสคริปต์ ASP ทั้งหมดจะออกหลังจากการเปลี่ยนเส้นทาง ถ้าเพจ ASP ถูกเปลี่ยนเส้นทางก่อนที่จะออกให้กับสคริปต์ ASP รหัส ASP จะไม่ถูกประมวลผล
เมื่อประมวลผลในระดับแอปพลิเคชัน หน้า ASP ทั้งหมดในแอปพลิเคชันเว็บจะถูกบัฟเฟอร์ เมื่อต้องการตั้งค่าบัฟเฟอร์ในระดับแอปพลิเคชัน ให้ทำตามขั้นตอนเหล่านี้: 1. ใน Microsoft Management Console (MMC) ค้นหาเว็บไซต์ที่มีแอปพลิเคชันเว็บอยู่
2. คลิกเพื่อขยายเว็บไซต์เพื่อแสดงไดเร็กทอรีเสมือนและเว็บแอปพลิเคชัน
3. คลิกขวาที่เว็บแอปพลิเคชัน จากนั้นคลิก Properties
4. บนแท็บ Virtual Directory คลิก Configure
โปรดทราบว่าถ้าปุ่ม Configure ไม่พร้อมใช้งาน แสดงว่าไดเร็กทอรีเสมือนไม่ใช่เว็บแอปพลิเคชัน คลิกสร้างเพื่อสร้างไดเร็กทอรีเสมือนให้กับเว็บแอปพลิเคชัน
5. ในกล่องโต้ตอบ ApplicationConfiguration@@ บนแท็บ ตัวเลือกแอป คลิก เปิดใช้งานบัฟเฟอร์
หากต้องการตั้งค่าระดับเพจสำหรับการบัฟเฟอร์ ให้เพิ่มโค้ดหลังบรรทัด @LANGUAGE บนเพจ ASP ดังที่แสดงด้านล่าง:
<% @LANGUAGE = "VBScript" %><% Response.Buffer = True %>สคริปต์ ASP/Clientside อื่นๆ หรือ HTML ...<% Response.Redirect %>ดังที่แสดงในการสาธิตโค้ดต่อไปนี้ สามารถตั้งค่าคุกกี้ได้ที่หน้า ระดับบนบัฟเฟอร์ ข้อมูลโค้ดนี้เขียนคุกกี้ก่อนที่จะส่งแท็ก <HTML> (องค์ประกอบ)
Response.Cookies("Name")=value<HTML>...เนื้อหา...</HTML>
หากคุณใช้ลมหมุนขนาดเล็ก แสดงว่าส่วนประกอบขาดหายไป