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, запрос middleware без токена возвращает баннер с версией (Doconut <version> is running on <host>) вместо 404. Полезно как быстрая проверка; оставьте false в продакшн.
boolUnsafeModefalseКогда true, пропускает проверку безопасности ASP.NET‑session при запросах страниц. Оставьте 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 6 его не использует; перезапустите приложение после замены лицензии.
DoconutPluginRegistryPluginRegistryРегистр только для чтения, собирающий вклады плагинов; используется фабрикой просмотрщика. Заполняется через AddPlugin<T>().

Приоритет лицензий (применяется при регистрации сервисов): LicenseStreamLicenseContentLicensePath → автоматическое обнаружение (см. Getting Started → License Setup).

Методы

AddPlugin<TPlugin>()

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

Используйте этот метод для выпущенных опциональных пакетов Converter и DICOM. Аннотация и обычный поиск являются встроенными лицензированными функциями и не используют 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.

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