DoconutOptions

กำหนดค่าบริการ Doconut

DoconutOptions (namespace Doconut) คืออ็อบเจ็กต์การกำหนดค่าเดียวสำหรับ SDK ทั้งหมด คุณกำหนดค่ามันครั้งเดียวภายใน AddDoconut() และมันถูกลงทะเบียนเป็น singleton.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

คุณสมบัติ

ประเภทคุณสมบัติค่าเริ่มต้นคำอธิบาย
boolShowDoconutInfofalseเมื่อ true, คำขอ middleware ที่ไม่มีโทเคนจะส่งคืนแบนเนอร์เวอร์ชัน (Doconut <version> is running on <host>) แทน 404. มีประโยชน์เป็นการตรวจสอบเบื้องต้น; ปล่อยให้ false ในการใช้งานจริง.
boolUnsafeModefalseเมื่อ true, จะข้ามการตรวจสอบความปลอดภัยของ ASP.NET-session ในคำขอหน้า. ปล่อยให้ false ในการใช้งานจริง (ดู แนวคิดหลัก → เซสชันและความปลอดภัย).
stringMiddlewarePath"/doconut"ค่าการประสานงานสำหรับ endpoint หน้า-รูปภาพ. จะถูกตรวจสอบความถูกต้อง, แต่ไม่ทำการเมานท์สาขา pipeline; ให้สอดคล้องกับการแมป UseDoconut() จริงและ client BasePath.
stringResourcesPath"/doconut-res"คำนำหน้าพาธ URL สำหรับทรัพยากร JS/CSS/รูปภาพ/ฟอนต์ที่ฝังอยู่.
stringLicensePath""พาธไปยังไฟล์ใบอนุญาต. ว่าง → แหล่งใบอนุญาตถัดไป, จากนั้นค้นหาอัตโนมัติ; ไม่พบ → สถานะการประเมินที่มีลายน้ำโดยไม่มีความสามารถ.
stringLicenseContent""เนื้อหา XML ใบอนุญาตดิบ (ฐานข้อมูล, ตัวแปรสภาพแวดล้อม, ตัวจัดการความลับ). มีลำดับความสำคัญเหนือ LicensePath.
Stream?LicenseStreamnullใบอนุญาตเป็นสตรีม, อ่านครั้งเดียวที่เริ่มต้น. มีลำดับความสำคัญเหนือแหล่งอื่นทั้งสอง.
boolResetLicensefalseแฟล็กความเข้ากันได้ที่สงวนไว้. การทำงานของ .NET 8 ปัจจุบันไม่ใช้มัน; รีสตาร์ทแอปพลิเคชันหลังจากเปลี่ยนใบอนุญาต.
DoconutPluginRegistryPluginRegistry—รีจิสทรีแบบอ่านอย่างเดียวที่รวบรวมการสนับสนุนของปลั๊กอิน; ถูกใช้โดย factory ตัวดู. เติมข้อมูลผ่าน AddPlugin<T>().

ลำดับความสำคัญของใบอนุญาต (บังคับใช้ที่การลงทะเบียนบริการ): LicenseStream → LicenseContent → LicensePath → การค้นหาอัตโนมัติ (ดู เริ่มต้นใช้งาน → การตั้งค่าใบอนุญาต).

วิธีการ

AddPlugin<TPlugin>()

text
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()

ใช้เมธอดนี้สำหรับแพคเกจ Converter และ DICOM ที่เปิดให้เลือกใช้แล้ว. การทำ annotation และการค้นหาแบบปกติเป็นฟีเจอร์ที่มีใบอนุญาตในตัวและไม่ใช้ AddPlugin<TPlugin>().

ลงทะเบียนปลั๊กอินของฝ่ายแรก (Converter, DICOM). แบบ fluent — คืนค่าอินสแตนซ์ของ options. AddDoconut() จะโยน InvalidOperationException สำหรับใบอนุญาตที่หายไป, ไฟล์ legacy TRIAL, หรือใบอนุญาตแบบชำระเงินที่ไม่ให้ความสามารถของปลั๊กอิน. การลงทะเบียนแบบชั่วคราว/เดโมจะคงอยู่หลังจากหมดอายุและจะอยู่ภายใต้ประตู runtime (ดู แนวคิดหลัก → ระบบปลั๊กอิน).

วิดเจ็ต Converter ที่เปิดให้เลือกใช้จะถูกเปิดด้วย AddConverterWidget() และแสดงผ่านคุณสมบัติอ่านอย่างเดียว ConverterWidget; ตัวเลือกของมันถูกอธิบายในหน้า Converter Plugin (ปลั๊กอิน → ปลั๊กอินแปลงรูป).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — จุดนำหน้าเป็นตัวเลือก
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

ลงทะเบียน custom viewer สำหรับส่วนขยายไฟล์. Custom viewer จะมีลำดับความสำคัญเหนือ viewer ที่มาพร้อมและปลั๊กอิน viewer และไม่ถูกจำกัดด้วยใบอนุญาต. เมื่อ defaultConfig ถูกละเว้นและเอกสารเปิดโดยไม่มีการกำหนด config อย่างชัดเจน, จะใช้ ImageConfig.

โยน ArgumentException (Extension must be a non-empty file extension.) สำหรับส่วนขยายว่างและ ArgumentNullException สำหรับ factory ที่เป็น null.

การตรวจสอบการเริ่มต้น

AddDoconut() ตรวจสอบ options fail-fast, ดังนั้นการกำหนดค่าผิดพลาดจะแสดงเป็นข้อยกเว้นที่ชัดเจนขณะเริ่มต้นแทนการเกิด 404 ที่ทำให้สับสนในเวลาคำขอ:

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.

การกำหนดค่าทั่วไป

csharp
// Production: ใบอนุญาตชัดเจน, ทุกอย่างถูกล็อก (ค่าเริ่มต้นด้านความปลอดภัยทั้งหมด)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Custom paths (เช่น เพื่อหลีกเลี่ยงความขัดแย้งของเส้นทาง)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

เมื่อคุณเปลี่ยน ResourcesPath, ให้รักษา ResPath ของวิดเจ็ต client ให้สอดคล้องกัน (ดู ViewerConfig).

MiddlewarePath ไม่ใช่ mapper เส้นทาง ASP.NET Core อัตโนมัติ. หาก Doconut ควรตอบเฉพาะใต้คำนำหน้าที่กำหนดเอง, ให้เมานท์ UseDoconut() บนสาขานั้น (เช่นด้วย app.Map("/docs-engine", branch => branch.UseDoconut())) และตั้งค่า client BasePath ให้เป็น URL เดียวกัน.

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