DoconutOptions

Настройка сервисов Doconut

DoconutOptions (namespace Doconut) является единственным объектом конфигурации для всего SDK. Вы настраиваете его один раз, внутри AddDoconut(), и он регистрируется как синглтон.

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‑session при запросах страниц. Оставьте false в продакшене (см. Основные концепции → Сеансы и безопасность).
stringMiddlewarePath"/doconut"Координационное значение для конечной точки page-image. Оно проверяется, но не монтирует ветку конвейера; держите его согласованным с реальным сопоставлением UseDoconut() и клиентским BasePath.
stringResourcesPath"/doconut-res"Префикс URL‑пути для встроенных ресурсов JS/CSS/image/font.
stringLicensePath""Путь к файлу лицензии. Пусто → следующий источник лицензии, затем автообнаружение; если ничего не найдено → состояние оценки с водяным знаком без возможностей.
stringLicenseContent""Сырой XML‑контент лицензии (база данных, переменная окружения, менеджер секретов). Имеет приоритет над LicensePath.
Stream?LicenseStreamnullЛицензия в виде потока, читается один раз при запуске. Имеет приоритет над обоими другими источниками.
boolResetLicensefalseЗарезервированный флаг совместимости. Текущая реализация .NET 8 его не использует; перезапустите приложение после замены лицензии.
DoconutPluginRegistryPluginRegistry—Регистр только для чтения, собирающий вклады плагинов; используется фабрикой просмотрщика. Заполняется через AddPlugin<T>().

Приоритет лицензий (применяется при регистрации сервисов): LicenseStream → LicenseContent → LicensePath → автоматическое обнаружение (см. Начало работы → Настройка лицензии).

Методы

AddPlugin<TPlugin>()

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

Используйте этот метод для выпущенных опциональных пакетов Converter и DICOM. Аннотация и обычный поиск являются встроенными лицензированными функциями и не используют AddPlugin<TPlugin>().

Регистрирует плагин первой стороны (Converter, DICOM). Fluent — возвращает экземпляр options. AddDoconut() бросает InvalidOperationException при отсутствии лицензии, устаревшем файле TRIAL или платной лицензии, не предоставляющей возможности плагина. Временные/демо‑регистрации сохраняются после истечения срока и подпадают под runtime‑gate (см. Основные концепции → Система плагинов).

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

Была ли эта страница полезной?