1>เพื่อนถามคำถามวันนี้:
เหตุใดจึงไม่มีข้อผิดพลาดเมื่อใช้ตัวควบคุมไฟล์เพื่ออ่านเส้นทางของรูปภาพ เอกสาร และไฟล์อื่นๆ แต่เมื่ออ่านไฟล์วิดีโอ (เช่น rmvb เป็นต้น) มีข้อผิดพลาดที่ไม่สามารถแสดงเพจได้
ข้อมูลโค้ดมีดังนี้:
โมฆะส่วนตัว btnUpFiles_Click (ผู้ส่งวัตถุ System.EventArgs e)
-
สตริง pathName=this.File1.PostedFile.FileName.ToString();
Response.Write (ชื่อเส้นทาง);
}
2>เริ่มแก้ไขปัญหา:
ฉันคิดว่ามันเป็นปัญหาในการรับสตริงเส้นทาง ดังนั้นฉันจึงดักเส้นทางและชื่อไฟล์ก่อน จากนั้นจึงดักจับนามสกุลไฟล์ และบันทึกเป็นสตริง แต่ก็มีข้อผิดพลาดอยู่เสมอ ข้อมูลโค้ดมีดังนี้:
string fullname=this.File1.PostedFile.FileName.ToString();// รับเส้นทางแบบเต็ม
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//รับพาธและชื่อไฟล์ และลบส่วนต่อท้ายไฟล์ออก
เซสชัน["firstname"]=firstname;//บันทึกในเซสชัน
ถ่าน [] spliter={'.'};//ตัวคั่นที่ใช้ในการแยกสตริง
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//บันทึกแต่ละส่วนของการแยกพาธแบบเต็มในอาร์เรย์
Session["lastname"]=fileName[fileName.Length-1];// บันทึก องค์ประกอบสุดท้าย (ส่วนต่อท้ายชื่อ) ในอาร์เรย์เป็นเซสชัน
Response.Redirect("test.aspx");//ฉันต้องการส่งต่อไปยังหน้านี้เพื่อทำการทดสอบ
วิธีการข้างต้นยังคงล้มเหลว และสาเหตุของข้อผิดพลาดดูเหมือนจะไม่เกี่ยวข้องกับสตริงเลย
3>ชาวเน็ต "@@" แนะนำว่าเป็นปัญหา httpRuntime (ขอบคุณ):
วิธีแก้ไขปัญหา: เพิ่มรหัสต่อไปนี้ใน <system.web></system.web> ใน web.config:
<httpRuntimeExecutionTimeout="600" maxRequestLength="951200"
useFullyQualifiedRedirectUrl = "จริง" minFreeThreads = "8"
minLocalRequestFreeThreads = "4" appRequestQueueLimit = "100" EnableVersionHeader = "true"/>
4> คำอธิบายจาก MSDN:
httpRuntime คือการกำหนดค่าการตั้งค่ารันไทม์ http ของ asp.net เพื่อกำหนดวิธีจัดการคำขอไปยังแอปพลิเคชัน asp.net
ExecutionTimeout: ระบุขีดจำกัดเวลาสูงสุดที่อนุญาตให้ดำเนินการตามคำขอ มีหน่วยเป็นวินาที
maxRequestLength: ระบุขนาดการอัพโหลดไฟล์สูงสุดที่ ASP.NET รองรับ ขีดจำกัดนี้สามารถใช้เพื่อป้องกันการปฏิเสธการโจมตีบริการที่เกิดจากผู้ใช้ส่งไฟล์จำนวนมากไปยังเซิร์ฟเวอร์ ขนาดที่ระบุอยู่ในหน่วย KB ค่าเริ่มต้นคือ 4096 KB (4 MB)
useFullyQualifiedRedirectUrl: ระบุว่าการเปลี่ยนเส้นทางไคลเอ็นต์มีคุณสมบัติครบถ้วนหรือไม่ (ในรูปแบบ " http://server/path " ซึ่งจำเป็นสำหรับการควบคุมอุปกรณ์เคลื่อนที่บางตัว) หรือการเปลี่ยนเส้นทางแบบสัมพันธ์ถูกส่งไปยังไคลเอ็นต์แทนการสิ้นสุดหรือไม่ หากเป็น True การเปลี่ยนเส้นทางทั้งหมดที่ไม่ผ่านการรับรองจะถูกแปลงเป็นรูปแบบที่ผ่านการรับรองโดยสมบูรณ์โดยอัตโนมัติ false เป็นตัวเลือกเริ่มต้น
minFreeThreads: ระบุจำนวนเธรดว่างขั้นต่ำที่อนุญาตให้ดำเนินการคำขอใหม่ ASP.NET เก็บจำนวนเธรดที่ระบุไว้ว่างสำหรับการร้องขอที่ต้องใช้เธรดเพิ่มเติมเพื่อดำเนินการให้เสร็จสิ้น ค่าเริ่มต้นคือ 8
minLocalRequestFreeThreads: ระบุจำนวนเธรดว่างขั้นต่ำที่ดูแลโดย ASP.NET ที่ได้รับอนุญาตให้ดำเนินการคำขอในเครื่องใหม่ จำนวนเธรดนี้สงวนไว้สำหรับการร้องขอขาเข้าจากโฮสต์ภายในเครื่อง ในกรณีที่บางคำขอส่งคำขอย่อยไปยังโฮสต์ภายในเครื่องในระหว่างการประมวลผล วิธีนี้จะหลีกเลี่ยงการหยุดชะงักที่อาจเกิดขึ้นจากการเข้าสู่เว็บเซิร์ฟเวอร์ซ้ำๆ
appRequestQueueLimit: ระบุจำนวนคำขอสูงสุดที่ ASP.NET จะจัดคิวสำหรับแอปพลิเคชัน คำขอจะถูกจัดคิวเมื่อมีเธรดว่างไม่เพียงพอที่จะจัดการคำขอ เมื่อคิวเกินขีดจำกัดที่ระบุในการตั้งค่านี้ คำขอที่เข้ามาจะถูกปฏิเสธพร้อมข้อความแสดงข้อผิดพลาด "503 - เซิร์ฟเวอร์ไม่ว่าง"
EnableVersionHeader: ระบุว่า ASP.NET ควรส่งออกส่วนหัวของเวอร์ชันหรือไม่ Microsoft Visual Studio 2005 ใช้คุณสมบัตินี้เพื่อกำหนดเวอร์ชันของ ASP.NET ที่ใช้งานอยู่ในปัจจุบัน สำหรับสภาพแวดล้อมการใช้งานจริง คุณสมบัตินี้ไม่จำเป็นและสามารถปิดใช้งานได้