ฉันกำลังจัดการกับโค้ดบางตัวที่ใช้ตัวกรอง HttpResponse แบบกำหนดเองในแอปพลิเคชัน asp.net
response.Filter = new HtmlResponseFilterStream();
HtmlResponseFilterStream นี้สืบทอดมาจาก MemoryStream วิธีการเขียนได้รับการแทนที่เพื่อรับเนื้อหาของการตอบสนอง HTTP ฉันใช้ Encoding.UTF8.GetString เพื่อรับเนื้อหาของหน้าเป็นชิ้นๆ
public override void Write(byte[] buffer, int offset, int count)
{
var contentInBuffer = Encoding.UTF8.GetString(buffer);
...
}
ในเครื่องท้องถิ่นของฉัน หากฉันไปที่หน้าใดๆ และแก้ไขข้อบกพร่องของโค้ด ฉันจะเห็นตัวแปร contentInBuffer ที่เติมเนื้อหา html จริงลงไป ทั้งกับ ISS ในพื้นที่หรือ ISS Express นอกจากนี้ยังใช้ได้ผลในสภาพแวดล้อมการผลิตของเราด้วย
อย่างไรก็ตาม หากฉันไปที่เครื่องทดสอบ สิ่งต่างๆ จะไม่ทำงานอย่างที่คาดไว้ หากฉันดีบักเนื้อหาภายในวิธีการเขียน (โดยใช้ดีบักเกอร์ระยะไกล) ฉันได้รับตัวละครแปลกๆแทน ดังนั้นฉันเดาว่านี่เป็นเพราะการใช้การเข้ารหัสที่แตกต่างกัน .. อาจจะ ..
ทั้งเซิร์ฟเวอร์ที่ใช้งานจริงและเซิร์ฟเวอร์ทดสอบมีข้อมูลจำเพาะเหมือนกันกับระบบปฏิบัติการและเซิร์ฟเวอร์เวอร์ชัน iis เดียวกัน
ฉันตรวจสอบการตั้งค่า .Net Globalization และการเข้ารหัสถูกตั้งค่าเป็น UTF-8 สำหรับคำขอ ส่วนหัวการตอบกลับ และการตอบกลับในทั้งสองเครื่อง
ฉันค่อนข้างแน่ใจว่านี่จะต้องเป็นสิ่งที่เกี่ยวข้องกับการตั้งค่าสภาพแวดล้อม ไม่แน่ใจว่าเกี่ยวข้องกับ IIS หรือ windows
มีความคิดบ้างไหม?