DoconutOptions

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

DoconutOptions (namespace Doconut) คืออ็อบเจ็กต์การกำหนดค่าเดียวสำหรับ SDK ทั้งหมด คุณกำหนดค่าเพียงครั้งเดียวในคอลแบ็กที่คุณส่งให้กับ DoconutHost.Initialize ใน Application_Start.

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.LicensePath     = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

คุณสมบัติ

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

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

วิธีการ

AddPlugin<TPlugin>()

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

ลงทะเบียนปลั๊กอิน (Converter, DICOM). แบบ fluent — คืนค่าอินสแตนซ์ของ options. Annotation และ Search เป็นฟีเจอร์ที่มีใบอนุญาตในตัวและไม่ได้ใช้มัน.

หากไม่มีใบอนุญาตที่ใช้งานอยู่ให้สิทธิ์ความสามารถของปลั๊กอิน, DoconutHost.Initialize จะโยน InvalidOperationException จาก Application_Start, และไซต์จะตอบทุกคำขอด้วย 500 ว่างจนกว่าจะถูกแก้ไข; ข้อความอยู่ในบันทึกเหตุการณ์ของ Windows (ดู ระบบปลั๊กอิน).

Add…Widget()

text
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)

วิดเจ็ตแบบ drop-in มีค่า ปิดโดยค่าเริ่มต้น. แต่ละการเรียก Add…Widget() จะเปิดจุดสิ้นสุดของวิดเจ็ตนั้นบน DocImage.axd, และต้องการให้ปลั๊กอินที่ตรงกันถูกลงทะเบียน. โมดูลทรัพยากรให้บริการสคริปต์ของวิดเจ็ตไม่ว่าคุณจะเปิดใช้งานหรือไม่, ดังนั้นวิดเจ็ตที่โหลดและวาดแต่ตอบ 404 ในการกระทำแรกของมันแสดงว่าขาดการเรียกนี้. วิดเจ็ต Converter มีเอกสารใน ปลั๊กอิน Converter.

RegisterViewer(extension, factory, defaultConfig?)

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

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

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

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

DoconutHost.Initialize ตรวจสอบความถูกต้องของ options ก่อนสร้างอะไรเลย:

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.

MiddlewarePath ถูกตรวจสอบแม้ว่า System.Web จะไม่เคยใช้มัน, ดังนั้นปล่อยไว้ที่ค่าเริ่มต้น. เช่นข้อยกเว้นทุกข้อที่โยนจาก Application_Start, ความล้มเหลวในการตรวจสอบจะแสดงเป็น 500 ว่างในทุกคำขอ, พร้อมข้อความในบันทึกเหตุการณ์ของ Windows.

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

csharp
// Production: ใบอนุญาตที่ชัดเจน, ส่วนที่เหลือทั้งหมดใช้ค่าเริ่มต้นที่ปลอดภัย.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Custom resource path (e.g. เพื่อหลีกเลี่ยงความขัดแย้งของเส้นทาง). Keep the viewer’s ResPath and any MVC
// IgnoreRoute in step with it: "/docs-assets" หมายถึง ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

เมื่อคุณเปลี่ยน ResourcesPath, ให้เปลี่ยนสามอย่างพร้อมกัน: ตัวเลือก, ResPath ของวิดเจ็ต ('docs-assets/images' สำหรับ "/docs-assets"), และใน MVC, IgnoreRoute สำหรับเส้นทางทรัพยากร (routes.IgnoreRoute("docs-assets/{*pathInfo}")). จุดสิ้นสุด DocImage.axd ไม่ย้าย: เส้นทางของมันถูกตั้งค่าโดยแอตทริบิวต์ path ของตัวจัดการใน Web.config.

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