DoconutOptions

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

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

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

Методи

AddPlugin<TPlugin>()

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

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

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

Опціональний віджет Converter активується за допомогою AddConverterWidget() і доступний через властивість лише для читання ConverterWidget; його параметри задокументовані на сторінці плагіна Converter (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 для null‑фабрики.

Перевірка під час запуску

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.

Загальні конфігурації

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.

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