การแก้ไขปัญหา
วินิจฉัยข้อผิดพลาดทั่วไป
หลายกรณีของ System.Web ล้มเหลวโดยไม่โยนข้อยกเว้นที่คุณจะเห็น: หน้าให้ค่า 500 ว่าง, ไอคอน 404, หรือคำขอที่ไม่คืนค่าเลย หน้านี้จัดเรียงตามสิ่งที่คุณสังเกต ข้อความที่อ้างอิงเป็นข้อความดิบที่ Doconut สร้างขึ้น
ภาพรวมอาการ
| สิ่งที่คุณเห็น | สาเหตุที่เป็นไปได้มากที่สุด | วิธีแก้ |
|---|---|---|
ทุก คำขอตอบกลับเป็น 500 ว่าง | ข้อยกเว้นใน Application_Start: ปลั๊กอินที่ไม่มีลิขสิทธิ์, ตัวเลือกที่ไม่ถูกต้อง, การกำหนดค่าฟาร์มที่ไม่สมบูรณ์ — หรือการเปลี่ยนเส้นทางการผูกมัดที่ระบุเวอร์ชันที่ไม่มีใน bin\ | บันทึกเหตุการณ์ Windows, Application, source ASP.NET. ดู ข้อผิดพลาดขณะเริ่มต้น |
บาง หน้า MVC ตอบกลับเป็น 500 ว่าง | Razor คอมไพล์วิวในเวลารัน: ส่วนหน้า netstandard หายจาก <compilation>, หรือวิวใช้ C# ที่ใหม่กว่า 5 (?., $"...", nameof) | เพิ่มส่วนหน้า (การติดตั้ง); ย้ายตรรกะจากวิวไปยังคอนโทรลเลอร์ |
หน้าแสดง —, … หรือคล้ายกันแทนเครื่องหมายขีดและสำเนียง | หน้าไฟล์ไม่มี byte-order mark จึงอ่านด้วยหน้า ANSI ของเซิร์ฟเวอร์ | <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" /> |
คอนโซลเบราว์เซอร์แสดง 404 สำหรับ HEAD /DocImage.axd?...&page=1 | ตัวจัดการถูกลงทะเบียนโดยไม่มีคำกริยา HEAD | verb="GET,HEAD,POST" บนตัวจัดการ |
| เอกสารถูกแสดง, แต่ไอคอนแถบเครื่องมือและสปินเนอร์โหลดหายไป | ResPath ชี้ไปที่รากของทรัพยากร, หรือเริ่มด้วย / | ResPath: 'doconut-res/images' |
คำขอ /doconut-res/... ตอบกลับเป็น 404 | โมดูลทรัพยากรไม่ได้ลงทะเบียน, runAllManagedModulesForAllRequests ปิดอยู่, หรือการกำหนดเส้นทาง MVC จับเส้นทาง | รายการ <modules>, และ routes.IgnoreRoute("doconut-res/{*pathInfo}") |
Viewer รายงาน The viewer handler could not be reached (no response). | BasePath เริ่มด้วย / ('/myapp' กลายเป็น //myapp/…, โฮสต์อื่น) | BasePath: '/' ที่รากของไซต์; 'myapp' ในไดเรกทอรีเสมือน |
Viewer รายงาน Please make sure your middleware is configured. | DocImage.axd ตอบกลับ 404: ตัวจัดการไม่อยู่ใน Web.config, การกำหนดเส้นทาง MVC จับมัน, หรือ BasePath ชี้ไปที่อื่น | รายการ <handlers>, routes.IgnoreRoute("{resource}.axd/{*pathInfo}"), และ BasePath |
ทุกหน้าจอแสดง You Are Not Authorized To View This Page. | เอกสารถูกเปิดในคำขอที่ไม่มีสถานะเซสชัน, สถานะเซสชันปิดอยู่, หรือคุกกี้เซสชันไม่ถึง DocImage.axd | ดู ไม่ได้รับอนุญาต |
| การแปลง Web Forms ไม่เคยคืนค่า | หน้าบล็อกที่ ConvertAsync — การ deadlock | Async="true" + RegisterAsyncTask (ปลั๊กอินแปลง) |
| ทุกหน้ามีลายน้ำการประเมิน | ไม่พบลิขสิทธิ์ — ไม่อยู่ใน <site root>\wwwroot | ตั้งค่าลิขสิทธิ์ |
วิดเจ็ตโหลด, แต่การกระทำแรกตอบกลับเป็น 404 | วิดเจ็ตไม่ได้เปิดใช้งาน, หรือ basePath ของมันไม่ใช่ '/DocImage.axd' | options.Add…Widget(), และ basePath: '/DocImage.axd' |
| เอกสารแรกหลังจากไซต์เริ่มหรือรีไซเคิลใช้เวลาหนึ่งนาทีหรือมากกว่า; เอกสารต่อมาจะเร็ว | เอนจินเอกสารโหลดเมื่อเปิดครั้งแรก, และแอนตี้ไวรัสแบบเรียลไทม์สแกนขณะโหลด | อุ่นไซต์และรักษา pool ให้ทำงาน — ดู เอกสารแรกหลังจากการเริ่มต้น |
| การอัปโหลดขนาดใหญ่แสดงหน้าข้อผิดพลาด IIS | การอัปโหลดเกิน maxRequestLength (KB) หรือ maxAllowedContentLength (bytes) | เพิ่มค่าสูงสุดทั้งสองให้เกินไฟล์หรือวิดเจ็ตที่ใหญ่ที่สุดของคุณ |
ความล้มเหลวขณะเริ่มต้น
ข้อยกเว้นที่ถูกโยนใน Application_Start ไม่ถึงเบราว์เซอร์: ทุกคำขอตอบกลับเป็น 500 ว่าง, และบันทึก IIS ไม่แสดงอะไรที่เป็นประโยชน์. ข้อยกเว้นอยู่ใน Windows event log (Event Viewer → Windows Logs → Application, source ASP.NET). ตัวอย่างทั่วไป:
ปลั๊กอินที่ไม่มีลิขสิทธิ์:
The Converter plugin is registered via AddPlugin but no active license grants Converter.
Remove the AddPlugin<...>() call or install a license (or trial/demo) that includes Converter.ไฟล์ Doconut.Viewer.<Capability>.lic ของปลั๊กอินต้องอยู่ใน wwwroot, ข้างๆ Doconut.Viewer.lic. การไม่มีลิขสิทธิ์และไฟล์ TRIAL รุ่นเก่าไม่ให้ความสามารถใดๆ กับปลั๊กอิน
ตัวเลือกไม่ถูกต้อง:
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.การประกอบที่ไม่สามารถโหลดได้. ASP.NET โหลดทุกการประกอบใน bin\ เมื่อแอปพลิเคชันเริ่ม, ดังนั้นการเปลี่ยนเส้นทางการผูกมัดใน Web.config ที่ระบุเวอร์ชันที่ไม่มีใน bin\ จะทำให้ไซต์ทั้งหมดหยุดทำงาน. คัดลอกการเปลี่ยนเส้นทางที่ NuGet สร้าง (สำหรับโครงการแบบ SDK, จาก bin\<YourApp>.dll.config) แทนการแก้ไขด้วยมือ, และคัดลอกอีกครั้งหลังการอัปเดตแพคเกจ.
คุณไม่ได้รับอนุญาตให้ดูหน้านี้.
หน้าถูกปฏิเสธเนื่องจากเซสชัน ASP.NET ที่ร้องขอไม่เคยได้รับเอกสาร ตรวจสอบตามลำดับ:
- การเปิดทำงานด้วยสถานะเซสชัน. MVC controllers และหน้า Web Forms มีสถานะนี้ ตัวกำหนดเอง
IHttpHandlerที่เปิดเอกสารต้องทำการ implementSystem.Web.SessionState.IRequiresSessionStateมิฉะนั้นจะไม่มีเซสชันให้มอบหมาย - สถานะเซสชันเปิดอยู่.
<sessionState mode="Off" />ปฏิเสธทุกหน้า - คุกกี้ถึงตัวจัดการ. คำขอเดียวต้นของวิดเจ็ตจะพา
ASP.NET_SessionIdไปด้วย; สคริปต์, การเรียกเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์, หรือหน้าตัดต้นที่ไม่มีคุกกี้จะไม่มี - Web farm: การเปิดผูกกับเบราว์เซอร์ (
DocOptions.BrowserId) และหน้าผ่านตั๋ว (objViewer.View(token, access)); ทุกโหนดใช้คีย์การลงนามเดียวกัน
การปฏิเสธเป็นภาพที่ให้บริการพร้อมสถานะ 200 ขนาดประมาณ 2 KB ตัวตรวจสอบที่ตรวจสอบแค่รหัสสถานะจะนับว่ามันเป็นหน้า
ไม่พบเซสชันเอกสาร. โปรดเปิดเอกสารใหม่.
โทเค็นหมดอายุ (หน้าต่างเลื่อน, DocOptions.TimeOut, ค่าเริ่มต้น 60 นาที), เอกสารถูกปิด, หรือ — บนเซิร์ฟเวอร์เดียว — พูลแอปพลิเคชันถูกรีไซเคิล การรีไซเคิลเกิดตามกำหนด, ทุกการแก้ไข Web.config, และหลังจากเวลาหมดการไม่ทำงานของพูล (ค่าเริ่มต้น 20 นาทีใน IIS) เปิดเอกสารอีกครั้งเพื่อรับโทเค็นใหม่
การเปิดเอกสารล้มเหลว
LicenseException พร้อมเหตุผลการปฏิเสธ — พบไฟล์ใบอนุญาตแต่ถูกปฏิเสธ (ลายเซ็นไม่ถูกต้อง, การดัดแปลง, รายการดำเนินการห้าม, หรือการสร้างนอกช่วงเวอร์ชันของใบอนุญาต) การเปิดถูกบล็อกแทนที่จะใส่น้ำหนัก
LicenseException:
This document type requires the 'Dicom' plugin license.ส่วนขยายนี้จัดการได้เฉพาะโดยปลั๊กอิน (ที่นี่คือ DICOM) ซึ่งความสามารถไม่ได้รับการมอบหมาย
FormatNotSupportedException — ไม่มีผู้ดู (ในตัว, ปลั๊กอิน, หรือกำหนดเอง) รองรับส่วนขยายนี้ DoconutOptions.RegisterViewer สามารถเพิ่มหนึ่งรายการสำหรับรูปแบบของคุณเอง
InvalidDataException — เนื้อหาเสียหายหรือไม่ตรงกับส่วนขยาย (ไฟล์ที่เปลี่ยนชื่อ) ตรวจสอบการอัปโหลดก่อนเปิด
InvalidOperationException:
No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().DocumentConverter ถูกแก้ไขโดยไม่ได้ลงทะเบียนปลั๊กอิน Converter
ผลลัพธ์ดูผิดพลาด
หน้ามีน้ำหนักลายน้ำ — ไม่พบใบอนุญาต, หรือใบอนุญาตหมดอายุหรือไม่ครอบคลุมเวอร์ชันนี้ ภายใต้ IIS ใบอนุญาตต้องอยู่ใน wwwroot ใต้รูทของไซต์ (AppContext.BaseDirectory\wwwroot) ไม่ใช่ใน bin\ ตรวจสอบ IDoconutLicenseService (License.IsLicenseFileFound, IsExpired, IsVersionValid, License.RejectionMessage)
เอกสารเก่าถูกแสดงเป็นข้อความที่อ่านไม่ออก — ลงทะเบียนการเข้ารหัสหน้าโค้ดเพจครั้งเดียวที่เริ่มต้น:
// Global.asax.cs, Application_Start - ก่อน DoconutHost.Initialize.
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);ฟอนต์ผิดหรือถูกแทนที่ — เซิร์ฟเวอร์ไม่มีฟอนต์ของเอกสาร Windows Server ที่ไม่มี Office มีฟอนต์น้อยกว่าคอมพิวเตอร์พัฒนาอย่างมาก ติดตั้งฟอนต์ หรือชี้ FontFolders (บน WordConfig และ PptConfig) ไปยังโฟลเดอร์ที่เก็บฟอนต์เหล่านั้น
คำอธิบายภาพปรากฏในตัวดูแต่การส่งออกมีกล่องข้อความ “Image blocked” — โฮสต์ของภาพมีที่อยู่ส่วนตัวหรือ loopback ซึ่งเซิร์ฟเวอร์ปฏิเสธการดึงข้อมูล ดู คำอธิบายภาพ
ฟีเจอร์ทำงานในรุ่นประเมิน, เงียบในการผลิต
ใบอนุญาต Temporary ที่ใช้งานอยู่ให้ความสามารถทั้งหมด; ใบอนุญาตที่คุณซื้อให้เฉพาะสิ่งที่คุณได้ซื้อไว้ หากไม่มีความสามารถ ไฟล์ Search หรือ Annotation จะไม่ถูกสร้าง และปลั๊กอินที่ลงทะเบียนจะหยุดไซต์ที่การเริ่มต้น เปรียบเทียบ IsCapabilityGranted(...) กับทุกฟีเจอร์ที่คุณใช้ก่อนทำการปรับใช้
การค้นหาไม่พบอะไร (หรือพบน้อยเกินไป)
- สำหรับ PDF,
AllowSearchไม่ได้เปิดใช้งานเมื่อเปิดเอกสาร — ค่าเริ่มต้นคือfalse. Word, Excel, และ PowerPoint มีสวิตช์เดียวกัน - เนื้อหาถูกสแกนหรือเป็นภาพเท่านั้น จึงไม่มีชั้นข้อความให้จับคู่
- HTML และ Microsoft Project (MPP) ไม่สามารถค้นหาได้ตามค่าเริ่มต้น: ตั้งค่า
DefaultRender = falseเพื่อให้แสดงผ่านการฉาย PDF ที่มีข้อความ objViewer.CanSearch()เป็นfalseหลังการเริ่มต้น: รูปแบบที่แก้ไขแล้วไม่มีเส้นทางการค้นหา สิ่งนี้แยกจากใบอนุญาต Search; ตรวจสอบทั้งสอง- หน้าอ่านค่าที่คืนจาก
objViewer.Search(...)— จำนวนจะมาถึงในอาร์กิวเมนต์ที่สามของคอลแบ็ก
ยังติดอยู่หรือ?
ทำซ้ำปัญหาด้วยการตั้งค่าขั้นต่ำจาก เริ่มต้นอย่างเร็ว. หากมันเกิดซ้ำที่นั่น, ติดต่อฝ่ายสนับสนุนพร้อมเอกสาร, Global.asax.cs ของคุณ, ส่วน Doconut ของ Web.config, และรายการบันทึกเหตุการณ์ของ Windows หากมี.
หน้านี้เป็นประโยชน์หรือไม่?