DoconutOptions

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

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

นี่เป็นการเปลี่ยนแปลงทั้งในด้านตำแหน่งและรูปแบบ ในไลบรารี .NET Standard ก่อนหน้า อินสแตนซ์ DoconutOptions ถูกสร้างขึ้นในช่วง pipeline และส่งต่อให้กับ UseDoconut(new DoconutOptions { … }) ที่นี่ middleware ไม่รับตัวเลือกใด ๆ — ทุกอย่างถูกตั้งค่าในระหว่างการลงทะเบียนบริการ.

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 ที่ไม่มีโทเคนจะคืนแบนเนอร์เวอร์ชันแทน 404 มีประโยชน์เป็นการตรวจสอบเบื้องต้น; ให้ตั้งเป็น false ในการใช้งานจริง.
boolUnsafeModefalseเมื่อ true จะข้ามการตรวจสอบความปลอดภัยของ ASP.NET-session ในคำขอหน้า ให้ตั้งเป็น false ในการใช้งานจริงบนโหนดเดียว (ดู Core Concepts → Sessions & Security) ก่อนหน้านี้เขียนว่า UnSafeMode.
stringMiddlewarePath"/doconut"ค่าประสานสำหรับ endpoint หน้า-ภาพ จะถูกตรวจสอบความถูกต้อง แต่ไม่ได้เมานท์สาขา pipeline; ให้สอดคล้องกับการแมพ UseDoconut() จริงและ BasePath ของไคลเอนต์.
stringResourcesPath"/doconut-res"คำนำหน้าพาธ URL สำหรับทรัพยากร JS/CSS/รูปภาพ/ฟอนต์ที่ฝังอยู่.
stringLicensePath""พาธไปยังไฟล์ใบอนุญาต หากว่าง → แหล่งใบอนุญาตถัดไป, จากนั้นค้นหาอัตโนมัติ; ไม่พบใด ๆ → สถานะการประเมินที่มีลายน้ำโดยไม่มีความสามารถ.
stringLicenseContent""เนื้อหาใบอนุญาต XML ดิบ (ฐานข้อมูล, ตัวแปรสภาพแวดล้อม, ตัวจัดการความลับ) มีลำดับความสำคัญเหนือ LicensePath.
Stream?LicenseStreamnullใบอนุญาตเป็นสตรีม อ่านครั้งเดียวที่เริ่มต้น มีลำดับความสำคัญเหนือแหล่งอื่น ๆ ทั้งสอง.
boolResetLicensefalseแฟล็กความเข้ากันได้ที่สงวนไว้ การทำงานปัจจุบันไม่ได้ใช้มัน; รีสตาร์ทแอปพลิเคชันหลังจากเปลี่ยนใบอนุญาต.
DoconutPluginRegistryPluginRegistryรีจิสทรีแบบอ่านอย่างเดียวที่รวบรวมการสนับสนุนของปลั๊กอิน; ใช้โดยโรงงานผู้ดู. เติมข้อมูลผ่าน AddPlugin<T>().

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

วิธีการ

AddPlugin()

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

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

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

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

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — leading dot optional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

ลงทะเบียน ผู้ดูแบบกำหนดเอง สำหรับส่วนขยายไฟล์ ผู้ดูแบบกำหนดเองมีลำดับความสำคัญเหนือผู้ดูในตัวและผู้ดูจากปลั๊กอินและไม่ถูกจำกัดด้วยใบอนุญาต เมื่อ defaultConfig ไม่ได้ระบุและเอกสารเปิดโดยไม่มีการกำหนดค่าเฉพาะ จะใช้ 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: explicit license, everything locked down (all security defaults)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Custom paths (e.g. to avoid a route conflict)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

เมื่อคุณเปลี่ยน ResourcesPath ให้ทำให้ ResPath ของวิดเจ็ตไคลเอนต์สอดคล้องกัน (ดู ViewerConfig) นี่เป็นหนึ่งในสองการตั้งค่าฝั่งไคลเอนต์ที่ล้มเหลวโดยไม่มีข้อความแสดงข้อผิดพลาด.

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

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