การติดตั้ง

เพิ่ม Doconut ไปยังโครงการ .NET Standard 2.1 ของคุณ

ตัวดู Doconut พื้นฐานสำหรับ .NET Standard มาพร้อมกับแพ็กเกจ NuGet เพียงหนึ่งชุดที่สามารถเชื่อมต่อกับแอปพลิเคชัน ASP.NET Core ใดก็ได้. ปลั๊กอินเสริมใช้แพ็กเกจแยกต่างหาก. หน้านี้ติดตั้งแพ็กเกจพื้นฐาน, ยืนยันว่าโฮสต์ของคุณสามารถใช้งานได้, และลงทะเบียน middleware — สิ่งที่จำเป็นขั้นต่ำก่อนการเรนเดอร์ครั้งแรกของคุณ.

ตรวจสอบเฟรมเวิร์กของโฮสต์ก่อน

ไลบรารีมุ่งเป้าไปที่ netstandard2.1. นั่นเป็นสัญญาที่แคบกว่าการสร้าง netstandard2.0 ก่อนหน้า, และเป็นสิ่งแรกที่ต้องตรวจสอบ:

โฮสต์รองรับ
.NET Core 3.0 หรือใหม่กว่า, รวมถึง .NET 5/6/7/8ใช่
.NET Framework (ทุกเวอร์ชัน)ไม่ — netstandard2.1 ไม่สามารถใช้กับ .NET Framework ได้

แพ็กเกจทำงานบน Windows เท่านั้น. สำหรับโฮสต์ Linux, ให้ใช้ Doconut.NET8 หรือ Doconut.NET6.

หากแอปพลิเคชันทำงานบน .NET Framework, นี่ไม่ใช่แพ็กเกจที่เหมาะสม. ใช้ Doconut.NETFramework แทน; ตั้งแต่เวอร์ชัน 26.9.0 จะต้องใช้ .NET Framework 4.7.2.

ติดตั้งแพ็กเกจ

bash
dotnet add package Doconut.NETStandard

คำสั่งที่ไม่มีเวอร์ชันจะติดตั้งรุ่นเสถียรล่าสุด. เพื่อระบุรุ่นที่เอกสารนี้อธิบาย, ให้ส่งเวอร์ชันเป็นตัวเลือกแยกต่างหาก:

bash
dotnet add package Doconut.NETStandard --version 26.10.0

Doconut.NETStandard คือ ID ของแพ็กเกจ. ส่วนต่อท้ายเวอร์ชันเป็นของชื่อไฟล์ Doconut.NETStandard.<version>.nupkg ที่ดาวน์โหลดและไม่ได้เป็นส่วนของ ID.

หมายเลขเวอร์ชันคือรุ่น

เรื่องนี้สำคัญกว่าชื่อแพ็กเกจ. ทั้งสองรุ่นของไลบรารี .NET Standard เผยแพร่ภายใต้ ID แพ็กเกจเดียวกัน, และเวอร์ชันเท่านั้นที่แยกแยะได้:

เวอร์ชันเป้าหมายAPI
26.7.0 and belownetstandard2.0การรวมก่อนหน้า
26.8.0 and abovenetstandard2.1การรวมที่อธิบายไว้ที่นี่

ไม่มี shim ความเข้ากันได้และไม่มีแพ็กเกจข้างเคียง. การอัปเดตเวอร์ชัน คือ การอัปเกรด, และคอมไพเลอร์จะรายงานความแตกต่างของ API ทันที.

อย่าเลือกเอกสารจากชื่อแพ็กเกจเพียงอย่างเดียว:

  • new Viewer(_cache, _accessor, …), UnSafeMode, synchronous OpenDocument(...), viewer.InitCache(), UseDoconutWebFarm, และสคริปต์ viewer ที่คัดลอกด้วยตนเองระบุ การรวมก่อนหน้า;
  • AddDoconut(), UseDoconutResources(), Viewer ที่ฉีดเข้า, และ OpenDocumentAsync(...) ระบุการรวมปัจจุบันที่อธิบายไว้ที่นี่.

คู่มือการตั้งค่า ก่อนหน้า ที่แปลแล้วยังคงใช้ได้. ใช้ คู่มือการย้าย เพื่อเปลี่ยนรุ่น; การอัปเดตแพ็กเกจจะไม่แปลงการเริ่มต้น, อายุการใช้งานของ viewer, หรือทรัพยากรเบราว์เซอร์โดยอัตโนมัติ.

ลงทะเบียน Doconut

AddDoconut() คือจุดเข้าถึงการลงทะเบียนเดียว — มี overload เพียงหนึ่งเดียว, และมันเชื่อมต่อบริการ Viewer, บริการใบอนุญาต, และโครงสร้างพื้นฐานการเรนเดอร์เข้าสู่ DI container.

สองการเรียก middleware ทำให้การตั้งค่าเสร็จสมบูรณ์, และลำดับของพวกมันสำคัญ: UseDoconutResources() ต้องทำงานก่อน UseDoconut(). UseDoconut() เป็น middleware สุดท้าย, ดังนั้นการเรียกก่อนหมายความว่าทุกคำขอไปยังทรัพยากร /doconut-res จะไม่ถึงตัวจัดการทรัพยากรและจะได้ 404. UseDoconut() ตอบทุกคำขอที่ถึงมัน, ดังนั้นให้ติดตั้งบนสาขาแยกของมันด้วย app.Map. การเชื่อมต่อ session ก็จำเป็นเช่นกัน — ระบบความปลอดภัยเอกสารเริ่มต้นของ Doconut ตรวจสอบทุกคำขอหน้าเทียบกับสถานะ session ของ ASP.NET.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // session state ต้องการแคช (MVC/Razor Pages มีการเพิ่มไว้แล้ว)
builder.Services.AddSession(); // ความปลอดภัยของเอกสาร Doconut พึ่งพา session state ของ ASP.NET

app.UseSession();          // เรียก UseSession() ก่อน UseDoconut()
app.UseDoconutResources(); // ต้องลงทะเบียนก่อน UseDoconut()
app.Map("/doconut", branch => branch.UseDoconut());

เนมสเปซ

ประเภทการกำหนดค่าไม่ได้กระจายอยู่ในสี่เนมสเปซอีกต่อไป. ในเวอร์ชันนี้เกือบทั้งหมดอยู่ในเนมสเปซราก Doconut:

csharp
using Doconut;                       // Viewer, DoconutOptions, DocOptions, การกำหนดค่ารูปแบบทั้งหมด
using Doconut.Middleware;            // AddDoconut, UseDoconut, UseDoconutResources
using Doconut.Clouds;                // การกำหนดค่า cloud และ file-share
using Doconut.Configs.Conversion;    // ConversionTarget

ชื่อประเภทเองไม่ได้เปลี่ยนแปลง — PdfConfig, WordConfig, ExcelConfig, CssConfig, ScriptConfig และส่วนที่เหลือยังคงอยู่. หากคุณกำลังย้ายแอปพลิเคชันที่มีอยู่, ไฟล์ส่วนใหญ่ต้องการเพียงสองบรรทัด using ที่ถูกลบ; ดูที่ คู่มือการย้าย.

ตัวเลือกทั้งหมด

DoconutOptions รองรับคุณสมบัติต่อไปนี้ที่สามารถตั้งค่าได้. ทุกอย่างเป็นทางเลือก — ค่าตั้งต้นด้านล่างจะใช้เมื่อคุณสมบัติกระทำไม่ได้ตั้งค่า.

คุณสมบัติค่าเริ่มต้นคำอธิบาย
ShowDoconutInfofalseเมื่อ true, คำขอที่ไม่มี token จะคืนแบนเนอร์เวอร์ชันแทน 404. มีประโยชน์เป็นการตรวจสอบเบื้องต้น; ปิดในสภาพการผลิต.
UnsafeModefalseเมื่อ true, จะข้ามการตรวจสอบความปลอดภัยของ ASP.NET‑session ในคำขอหน้า. ปิดในสภาพการผลิต. โปรดสังเกตการสะกด — ไลบรารีก่อนหน้านี้เรียกสิ่งนี้ว่า UnSafeMode.
MiddlewarePath"/doconut"ค่าการประสานงานสำหรับ endpoint หน้า‑รูปภาพ. มีการตรวจสอบความถูกต้อง, แต่ไม่ได้สร้างสาขาโดยตัวเอง; ให้สอดคล้องกับการแมป UseDoconut() จริงและ client BasePath.
ResourcesPath"/doconut-res"ที่ตั้งที่ให้บริการทรัพยากร JS/CSS/รูปภาพที่ฝังอยู่.
LicensePath"" (สตริงว่าง)เส้นทางไปยังไฟล์ใบอนุญาต. ค่าว่างหมายถึงให้ผ่านไปยังแหล่งต่อไป, แล้วทำการค้นหาอัตโนมัติ.
LicenseContent"" (สตริงว่าง)เนื้อหาใบอนุญาตดิบ — มาจากตัวแปรสภาพแวดล้อม, ตัวจัดการความลับ, หรือฐานข้อมูล.
LicenseStreamnullใบอนุญาตเป็นสตรีม, อ่านครั้งเดียวที่เริ่มต้น.
ResetLicensefalseธงความเข้ากันได้ที่สงวนไว้. ใบอนุญาตจะถูกอ่านในระหว่าง AddDoconut(); รีสตาร์ทแอปหลังจากเปลี่ยนใบอนุญาต.
MaxConcurrentEditorSessions200จำนวนสูงสุดของเซสชัน editor ที่ใช้งานอยู่ (เอกสารที่เปิดด้วย DocOptions.EditMode). หากเกิน, เซสชัน editor ที่ไม่ได้ใช้เป็นเวลานานที่สุดจะถูกปิด. เซสชัน viewer ปกติจะไม่ถูกนับ. 0 หรือค่าลบหมายถึงไม่มีขีดจำกัด.
EditorSnapshotEveryOps50เมื่อเปิดการคงสภาพ editor (AddDoconutEditorPersistence), ทำ snapshot เอกสารที่ใช้งานอยู่ทุก N การเปลี่ยนแปลงที่บันทึก. 0 หรือค่าลบจะไม่ทำ snapshot ระหว่างเซสชัน. ไม่มีผลเมื่อการคงสภาพถูกปิด.

ลำดับความสำคัญของใบอนุญาตเมื่อกำหนดแหล่งมากกว่าหนึ่ง: LicenseStream มีความเหนือกว่า LicenseContent มีความเหนือกว่า LicensePath มีความเหนือกว่า การค้นหาอัตโนมัติ — ดูที่ การตั้งค่าใบอนุญาต.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.MiddlewarePath  = "/doconut";     // ประสานงานกับการแมปแอปและ BasePath ของ client
    options.ResourcesPath   = "/doconut-res"; // ตำแหน่งที่ JS/CSS/รูปภาพของ viewer ถูกให้บริการจาก
    options.UnsafeMode      = false;          // คงความปลอดภัยของ session ไว้
    options.ShowDoconutInfo = false;
});

ขั้นตอนต่อไป

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