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، یک درخواست میدلور بدون توکن بنر نسخه (Doconut <version> is running on <host>) را به جای 404 برمی‌گرداند. برای بررسی سریع مفید است؛ در محیط تولید false را نگه دارید.
boolUnsafeModefalseزمانی که true، بررسی امنیتی جلسه ASP.NET را در درخواست‌های صفحه نادیده می‌گیرد. در محیط تولید false را نگه دارید (به Core Concepts → Sessions & Security مراجعه کنید).
stringMiddlewarePath"/doconut"مقدار هماهنگی برای نقطه انتهایی page-image. اعتبارسنجی می‌شود، اما شاخه‌ای از خط لوله را نصب نمی‌کند؛ آن را با نگاشت واقعی UseDoconut() و کلاینت BasePath هم‌راستا نگه دارید.
stringResourcesPath"/doconut-res"پیشوند مسیر URL برای منابع جاسازی‌شده JS/CSS/image/font.
stringLicensePath""مسیر فایل مجوز. خالی → منبع مجوز بعدی، سپس کشف خودکار؛ اگر چیزی یافت نشد → حالت ارزیابی با واترمارک و بدون قابلیت‌ها.
stringLicenseContent""محتوای XML خام مجوز (پایگاه داده، متغیر محیطی، مدیر اسرار). بر LicensePath اولویت دارد.
Stream?LicenseStreamnullمجوز به‌صورت جریان، یک بار در زمان راه‌اندازی خوانده می‌شود. بر هر دو منبع دیگر اولویت دارد.
boolResetLicensefalseپرچم سازگاری رزرو شده. پیاده‌سازی فعلی .NET 6 از آن استفاده نمی‌کند؛ پس از جایگزینی مجوز برنامه را مجدداً راه‌اندازی کنید.
DoconutPluginRegistryPluginRegistry—ثبت‌نام فقط‑خواندنی که مشارکت‌های افزونه را جمع‌آوری می‌کند؛ توسط کارخانه نمایشگر مصرف می‌شود. از طریق AddPlugin<T>() پر کنید.

اولویت مجوز (در زمان ثبت سرویس اعمال می‌شود): LicenseStream → LicenseContent → LicensePath → کشف خودکار (به Getting Started → License Setup مراجعه کنید).

متدها

AddPlugin<TPlugin>()

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

از این متد برای بسته‌های Converter و DICOM که به‌صورت opt-in منتشر شده‌اند استفاده کنید. حاشیه‌نویسی و جستجوی عادی ویژگی‌های دارای مجوز داخلی هستند و از AddPlugin<TPlugin>() استفاده نمی‌کنند.

یک افزونه داخلی (Converter، DICOM) را ثبت می‌کند. Fluent — نمونه options را برمی‌گرداند. AddDoconut() برای مجوز گمشده، فایل قدیمی TRIAL یا مجوز پرداخت‌شده‌ای که قابلیت افزونه را اعطا نمی‌کند، InvalidOperationException را پرتاب می‌کند. ثبت‌های موقت/دمویی پس از انقضا حفظ می‌شوند و تحت دروازه زمان اجرا قرار می‌گیرند (به Core Concepts → Plugin System مراجعه کنید).

ویجت opt-in Converter با AddConverterWidget() فعال می‌شود و از طریق ویژگی فقط‑خواندنی ConverterWidget در دسترس است؛ گزینه‌های آن در صفحه افزونه Converter (Plugins → Converter Plugin) مستند شده‌اند.

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.) و برای کارخانهٔ null ArgumentNullException پرتاب می‌کند.

اعتبارسنجی راه‌اندازی

AddDoconut() گزینه‌ها را به‌سرعت‑شکست اعتبارسنجی می‌کند، بنابراین یک پیکربندی نادرست به‌صورت استثنای واضح در زمان راه‌اندازی ظاهر می‌شود نه 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
// محیط تولید: مجوز صریح، همه چیز قفل شده (تمام پیش‌فرض‌های امنیتی)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// مسیرهای سفارشی (مثلاً برای جلوگیری از تداخل مسیر)
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 تنظیم کنید.

آیا این صفحه مفید بود؟