DoconutOptions
Настройка сервисов Doconut
DoconutOptions (namespace Doconut) — единственный объект конфигурации для всего SDK. Вы настраиваете его один раз, внутри AddDoconut(), и он регистрируется как singleton.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Свойства
| Тип | Свойство | По умолчанию | Описание |
|---|---|---|---|
bool | ShowDoconutInfo | false | Когда true, запрос middleware без токена возвращает баннер с версией (Doconut <version> is running on <host>) вместо 404. Полезно как быстрая проверка; оставьте false в продакшн. |
bool | UnsafeMode | false | Когда true, пропускает проверку безопасности ASP.NET‑session при запросах страниц. Оставьте false в продакшн (см. Core Concepts → Sessions & Security). |
string | MiddlewarePath | "/doconut" | Координационное значение для конечной точки page‑image. Оно проверяется, но не монтирует ветку конвейера; держите его согласованным с реальным сопоставлением UseDoconut() и клиентским BasePath. |
string | ResourcesPath | "/doconut-res" | Префикс URL‑пути для встроенных ресурсов JS/CSS/изображений/шрифтов. |
string | LicensePath | "" | Путь к файлу лицензии. Пусто → следующий источник лицензии, затем автообнаружение; если ничего не найдено → состояние оценки с водяным знаком и без возможностей. |
string | LicenseContent | "" | Сырой XML‑контент лицензии (база данных, переменная окружения, менеджер секретов). Имеет приоритет над LicensePath. |
Stream? | LicenseStream | null | Лицензия в виде потока, читается один раз при запуске. Имеет приоритет над обоими другими источниками. |
bool | ResetLicense | false | Зарезервированный флаг совместимости. Текущая реализация .NET 6 его не использует; перезапустите приложение после замены лицензии. |
DoconutPluginRegistry | PluginRegistry | — | Регистр только для чтения, собирающий вклады плагинов; используется фабрикой просмотрщика. Заполняется через AddPlugin<T>(). |
Приоритет лицензий (применяется при регистрации сервисов): LicenseStream → LicenseContent → LicensePath → автоматическое обнаружение (см. Getting Started → License Setup).
Методы
AddPlugin<TPlugin>()
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?)
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‑ов во время запроса:
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.Общие конфигурации
// 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.
Была ли эта страница полезной?