DoconutOptions

Налаштування сервісів Doconut

DoconutOptions (namespace Doconut) є єдиним об’єктом налаштування для всього SDK. Ви налаштовуєте його один раз, всередині AddDoconut(), і він реєструється як синглтон.

Це зміна не лише розташування, а й форми. У попередній бібліотеці .NET Standard DoconutOptions екземпляр створювався під час конвеєра і передавався до 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>();
});

Properties

ТипВластивістьЗа замовчуваннямОпис
boolShowDoconutInfofalseКоли true, запит middleware без токену повертає банер версії замість 404. Корисно як швидка перевірка; залиште false у продакшн.
boolUnsafeModefalseКоли true, пропускає перевірку безпеки ASP.NET-сесії при запитах сторінок. Залиште false у продакшн на одному вузлі (див. Core Concepts → Sessions & Security). Раніше писалося UnSafeMode.
stringMiddlewarePath"/doconut"Координаційне значення для кінцевої точки page-image. Воно валідовано, але не монтує гілку конвеєра; тримайте його узгодженим з фактичною мапою UseDoconut() та клієнтом BasePath.
stringResourcesPath"/doconut-res"Префікс URL-шляху для вбудованих ресурсів JS/CSS/image/font.
stringLicensePath""Шлях до файлу ліцензії. Порожньо → наступне джерело ліцензії, потім автоматичне виявлення; якщо нічого не знайдено → стан оцінки з водяним знаком без можливостей.
stringLicenseContent""Необроблений XML вміст ліцензії (база даних, змінна оточення, менеджер секретів). Має пріоритет над LicensePath.
Stream?LicenseStreamnullЛіцензія як потік, читається один раз під час запуску. Має пріоритет над обома іншими джерелами.
boolResetLicensefalseЗарезервований прапорець сумісності. Поточна реалізація його не використовує; перезапустіть застосунок після заміни ліцензії.
DoconutPluginRegistryPluginRegistry—Реєстр лише для читання, що збирає внески плагінів; використовується фабрикою переглядачів. Заповнюйте через AddPlugin<T>().

Пріоритет ліцензій (застосовується під час реєстрації сервісу): LicenseStream → LicenseContent → LicensePath → автоматичне виявлення (див. Getting Started → License Setup).

Methods

AddPlugin<TPlugin>()

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

Використовуйте цей метод для випущених opt-in пакетів Converter та DICOM. Анотація та звичайний пошук є вбудованими ліцензованими функціями і не використовують AddPlugin<TPlugin>().

Реєструє плагін першої сторони (Converter, DICOM). Fluent — повертає екземпляр параметрів. AddDoconut() викидає InvalidOperationException при відсутній ліцензії, застарілому файлі TRIAL або платній ліцензії, що не надає можливість плагіну. Тимчасові/демо реєстрації зберігаються після закінчення терміну та підлягають runtime gate (див. Core Concepts → Plugin System).

Віджет opt-in Converter увімкнено за допомогою AddConverterWidget() і доступний через лише для читання властивість ConverterWidget; його параметри задокументовані на сторінці Converter Plugin (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.) при порожньому розширенні та ArgumentNullException для null factory.

Startup validation

AddDoconut() валідовує параметри 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.

Common configurations

csharp
// Продакшн: явна ліцензія, все заблоковано (усі типові налаштування безпеки)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Користувацькі шляхи (e.g. щоб уникнути конфлікту маршруту)
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: '/'.

Чи була ця сторінка корисною?