DoconutOptions
Налаштування сервісів Doconut
DoconutOptions (namespace Doconut) є єдиним об’єктом налаштування для всього SDK. Ви налаштовуєте його один раз, всередині AddDoconut(), і він реєструється як синглтон.
Це зміна не лише розташування, а й форми. У попередній бібліотеці .NET Standard
DoconutOptions екземпляр створювався під час конвеєра і передавався до
UseDoconut(new DoconutOptions { … }). Тут middleware не приймає жодних параметрів —
усе налаштовується під час реєстрації сервісу.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Properties
| Тип | Властивість | За замовчуванням | Опис |
|---|---|---|---|
bool | ShowDoconutInfo | false | Коли true, запит middleware без токену повертає банер версії замість 404. Корисно як швидка перевірка; залиште false у продакшн. |
bool | UnsafeMode | false | Коли true, пропускає перевірку безпеки ASP.NET-сесії при запитах сторінок. Залиште false у продакшн на одному вузлі (див. Core Concepts → Sessions & Security). Раніше писалося UnSafeMode. |
string | MiddlewarePath | "/doconut" | Координаційне значення для кінцевої точки page-image. Воно валідовано, але не монтує гілку конвеєра; тримайте його узгодженим з фактичною мапою UseDoconut() та клієнтом BasePath. |
string | ResourcesPath | "/doconut-res" | Префікс URL-шляху для вбудованих ресурсів JS/CSS/image/font. |
string | LicensePath | "" | Шлях до файлу ліцензії. Порожньо → наступне джерело ліцензії, потім автоматичне виявлення; якщо нічого не знайдено → стан оцінки з водяним знаком без можливостей. |
string | LicenseContent | "" | Необроблений XML вміст ліцензії (база даних, змінна оточення, менеджер секретів). Має пріоритет над LicensePath. |
Stream? | LicenseStream | null | Ліцензія як потік, читається один раз під час запуску. Має пріоритет над обома іншими джерелами. |
bool | ResetLicense | false | Зарезервований прапорець сумісності. Поточна реалізація його не використовує; перезапустіть застосунок після заміни ліцензії. |
DoconutPluginRegistry | PluginRegistry | — | Реєстр лише для читання, що збирає внески плагінів; використовується фабрикою переглядачів. Заповнюйте через AddPlugin<T>(). |
Пріоритет ліцензій (застосовується під час реєстрації сервісу): LicenseStream → LicenseContent → LicensePath → автоматичне виявлення (див. Getting Started → License Setup).
Methods
AddPlugin<TPlugin>()
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?)
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 під час запиту:
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
// Продакшн: явна ліцензія, все заблоковано (усі типові налаштування безпеки)
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: '/'.
Чи була ця сторінка корисною?