การแก้ไขปัญหา

วินิจฉัยข้อผิดพลาดทั่วไป

ข้อความต่อไปนี้เป็นข้อความดิบที่ Doconut สร้างขึ้น จัดเรียงตามอาการ พบข้อผิดพลาดของคุณและใช้วิธีแก้.

ตัวดูแสดงไม่มีอะไร

พื้นที่ตัวดูว่างเปล่า, คอนโซลเบราว์เซอร์เต็มด้วย 404 สำหรับ /doconut-res/...
UseDoconutResources() หายไป, หรือวางหลังจาก UseDoconut(). มันต้องมาก่อนใน pipeline.

HTTP 500 พร้อมกับ:

text
Session middleware not configured. Call UseSession() before UseDoconut().

ระบบความปลอดภัยโทเคนของ Doconut (เปิดใช้งานโดยค่าเริ่มต้น) ต้องการสถานะเซสชันของ ASP.NET. เพิ่ม builder.Services.AddSession() และ app.UseSession() ก่อน สาขา middleware ของ Doconut. สถานะเซสชันต้องการแคชด้วย: ในแอป minimal-API ให้เพิ่ม builder.Services.AddDistributedMemoryCache(), หรือแอปจะหยุดที่การเริ่มต้นด้วย Unable to resolve service for type 'IDistributedCache' (แอป MVC และ Razor Pages จะลงทะเบียนไว้แล้ว).

รูปภาพข้อผิดพลาดในพื้นที่หน้าแสดงข้อความ:

text
You Are Not Authorized To View This Page.

โทเคนถูกเปิดโดยเซสชันเบราว์เซอร์ที่แตกต่าง สาเหตุทั่วไป: คุกกี้เซสชันไม่ถึงคำขอของหน้า (การตั้งค่า cross-origin, นโยบาย SameSite, ลูกค้า API ที่ไม่มี cookie jar), หรือแอปรีสตาร์ท (คีย์เซสชันใหม่) นี่คือชั้นความปลอดภัยทำงานตามที่ออกแบบ — ดู Core Concepts → Sessions & Security.

รูปภาพข้อผิดพลาดแสดงข้อความ:

text
Document session not found. Please re-open document.

โทเคนหมดอายุ (หน้าต่างเลื่อน, ค่าเริ่มต้น 60 นาที — DocOptions.TimeOut) หรือเซสชันถูกปิด เปิดเอกสารใหม่เพื่อรับโทเคนใหม่.

การเปิดเอกสารล้มเหลว

LicenseException พร้อมข้อความปฏิเสธ — พบไฟล์ใบอนุญาตแต่ถูกปฏิเสธ (ลายเซ็นไม่ถูกต้อง, ถูกดัดแปลง, ถูกบล็อค, หรือบิลด์อยู่นอกช่วงเวอร์ชัน/อัปเดตของใบอนุญาต) สถานะนี้บล็อกการเปิด (fail-fast) แทนที่จะลดระดับเป็นลายน้ำ; อ่าน License.RejectionMessage เพื่อดูเหตุผล.

LicenseException:

text
This document type requires the 'Dicom' plugin license.

ส่วนขยายนี้จัดการได้เฉพาะโดยปลั๊กอิน (ที่นี่: DICOM) และความสามารถไม่ได้รับการให้แล้ว ลงทะเบียนปลั๊กอินและตรวจสอบ lic.IsCapabilityGranted(LicenseCapability.Dicom). สิทธิ์ที่ไม่มีหรือไม่เพียงพอ (non-temporary) ปกติจะล้มเหลวก่อนหน้าในระหว่าง AddDoconut().

FormatNotSupportedException:

text
Document format '<extension>' is not supported.

ไม่มีตัวดู — ในตัว, ปลั๊กอิน, หรือแบบกำหนดเอง — รองรับส่วนขยายนั้น ตรวจสอบรายการรูปแบบที่สนับสนุน; สำหรับรูปแบบของคุณเอง, DoconutOptions.RegisterViewer สามารถเพิ่มได้.

InvalidDataException — เนื้อหาไฟล์เสียหายหรือไม่ตรงกับส่วนขยาย (เช่น ไฟล์ที่เปลี่ยนชื่อ). ตรวจสอบการอัปโหลดก่อนเปิด.

InvalidOperationException:

text
No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().

คุณได้แก้ไข DocumentConverter โดยไม่ได้ลงทะเบียนปลั๊กอิน Converter.

การเริ่มต้นล้มเหลว

InvalidOperationException ที่กล่าวถึงปลั๊กอินที่ลงทะเบียนผ่าน AddPlugin — ใบอนุญาต non-temporary ปัจจุบันไม่ได้ให้ความสามารถของปลั๊กอินนั้น ลบการลงทะเบียนหรือทำการติดตั้งใบอนุญาตที่ให้สิทธิ์นั้น. ใบอนุญาตที่หายไปและไฟล์ legacy TRIAL ไม่ให้ความสามารถของปลั๊กอินใดๆ.

ArgumentException จาก AddDoconut():

text
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.

การตรวจสอบตัวเลือก fail-fast — แก้ไขเส้นทางที่เป็นปัญหา.

ข้อผิดพลาดการสร้าง / ขึ้นต่อ

ข้อผิดพลาดคอมไพเลอร์ CS1705, หรือขณะรันไทม์เมื่อเปิดเอกสาร:

text
Could not load file or assembly 'System.Text.Json, Version=8.0.0.0'

โปรเจคของคุณระบุ System.Text.Json หรือ System.Text.Encodings.Web ต่ำกว่าการพึ่งพา 8.0.x ที่ประกาศโดย Doconut.NET6. ลบการดาวน์เกรดและให้ NuGet กู้คืนกราฟแพ็กเกจ (System.Text.Json 8.0.6 และ System.Text.Encodings.Web 8.0.0 ในแพ็กเกจที่ตรวจสอบ 26.7.0).

TypeInitializationException บนไฟล์พรีเซนเทชันแรก:

text
Could not load ... System.Drawing.Common, Version=6.0.0.0

เอนจินพรีเซนเทชันต้องการ System.Drawing.Common 6.0.0 อย่างเคร่งครัด (ประกาศโดยแพ็กเกจ). อย่าลบหรือแทนที่การพึ่งพานั้น — การเปิดไฟล์ PPT/PPTX/PPS/POT/ODP ทุกไฟล์จะล้มเหลวหากไม่มีมัน.

ผลลัพธ์ดูผิดพลาด

หน้าแสดงลายน้ำ — แอปอยู่ในสถานะประเมิน: ไม่พบไฟล์ใบอนุญาต, หน้าต่างชั่วคราวหรือการสมัครสมาชิกหมดอายุ, หรือโดเมนไม่ถูกต้อง. ตรวจสอบ IDoconutLicenseService (License.IsLicenseFileFound, IsExpired, IsVersionValid, IsValidForDomain, License.RejectionMessage) — การอ้างอิง IDoconutLicenseService ของหน้าลิขสิทธิ์แสดงจุดสิ้นสุดที่พร้อมใช้งาน.

เอกสาร legacy แสดงข้อความเป็นอักขระผิด — การเข้ารหัส code-page ไม่ได้โหลดโดยค่าเริ่มต้นบน .NET 6. เพิ่มหนึ่งครั้งที่การเริ่มต้น:

csharp
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

ฟอนต์ผิดหรือถูกแทนที่บน Linux/Docker — คอนเทนเนอร์ไม่มีฟอนต์ของเอกสาร. ชี้ FontFolders (บน WordConfig/PptConfig) ไปยังไดเรกทอรีฟอนต์ที่เมานท์.

พรีเซนเทชันเปิดได้แต่ไม่แสดงผลบน Linux/macOS — เรนเดอร์ PPT/PPTX/PPS/POT/ODP ปัจจุบันต้องการ libgdiplus เนทีฟพร้อมกับ System.Drawing.EnableUnixSupport=true. แพ็กเกจจัดหา System.Drawing.Common 6.0.0 เนื่องจากเป็นเวอร์ชันสุดท้ายที่รองรับสวิตช์นี้.

ฟีเจอร์ทำงานในโหมดประเมิน, แต่เงียบในการผลิต

ความประหลาดใจคลาสสิกเมื่อเปิดใช้งานจริง: ใบอนุญาต Temporary ที่ใช้งานอยู่ให้ทุกความสามารถ; ใบอนุญาตที่คุณซื้อให้เฉพาะสิ่งที่คุณได้ซื้อ. แพ็คเกจการค้นหาและการอธิบายประกอบอาจหายไปเมื่อความสามารถของมันไม่มี. ปลั๊กอิน Converter หรือ DICOM ที่ลงทะเบียนด้วยใบอนุญาต non-temporary ที่ไม่เพียงพอจะล้มเหลวระหว่าง AddDoconut(). เปรียบเทียบ IsCapabilityGranted(...) กับทุกฟีเจอร์ที่คุณเปิดใช้ก่อนการปรับใช้.

การค้นหาไม่พบอะไร (หรือพบน้อยเกินไป)

  • สำหรับ PDF โดยตรง, AllowSearch ไม่ได้เปิดใช้งานในขณะเปิด. Word, Excel, และ PowerPoint เปิดสวิตช์เดียวกันผ่าน PdfConfig ที่ซ้อนกัน.
  • เนื้อหาเป็นการสแกน/เฉพาะภาพ, ดังนั้นการค้นปกติไม่มีชั้นข้อความให้จับคู่. ใช้แหล่งข้อมูลที่มีข้อความหรือการฉาย PDF ที่รักษาข้อความไว้.
  • HTML และ MS Project (MPP) ไม่สามารถค้นหาได้ในค่าเริ่มต้น — ตั้งค่า DefaultRender = false เพื่อให้พวกเขาแสดงผ่านการฉาย PDF พร้อมชั้นข้อความเนทีฟ. Word, Excel, PowerPoint, TXT, Visio, อีเมล, EPUB, และ MHT ค้นหาได้ตามค่าเริ่มต้นของแคตาล็อก.
  • objViewer.CanSearch() เป็น false หลังการเริ่มต้น — รูปแบบที่แก้ไขแล้วไม่มีเส้นทางการค้นหามาตรฐาน. คำตัดสินนี้แยกจากใบอนุญาต Search; ตรวจสอบทั้งสอง.

ยังติดอยู่?

แยกปัญหาโดยใช้แอป Quick Start ขั้นต่ำ; หากปัญหายังคงเกิดขึ้นที่นั่น, ติดต่อฝ่ายสนับสนุนพร้อมเอกสาร, Program.cs ของคุณ, และผลลัพธ์การวินิจฉัยใบอนุญาต.

หน้านี้เป็นประโยชน์หรือไม่?