DoconutOptions

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

DoconutOptions (namespace Doconut) — це єдиний об’єкт конфігурації для всього SDK. Ви налаштовуєте його один раз, у зворотному виклику, який передаєте до DoconutHost.Initialize у Application_Start.

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.LicensePath     = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Властивості

ТипВластивістьЗа замовчуваннямОпис
boolUnsafeModefalseКоли false, DocImage.axd подає сторінку лише до ASP.NET сесії, яка відкрила документ (або, у фермі, до браузера з підписаним токеном). Коли true, будь‑який запит, що містить токен, обслуговується. Залиште його false — див. Sessions & Security.
boolShowDoconutInfofalseКоли true, запит DocImage.axd без токену відповідає Doconut <version> is running on <host> замість 404. Корисно як швидка перевірка; залиште false у продакшн.
stringResourcesPath"/doconut-res"URL‑префікс, під яким модуль ресурсів подає вбудовані скрипти, стилі та зображення.
stringLicensePath""Повний шлях до файлу ліцензії. Порожньо → наступне джерело ліцензії, потім автоматичне виявлення; нічого не знайдено → водяний знак у оцінковій версії без функціоналу.
stringLicenseContent""Необроблений вміст ліцензії (база даних, змінна середовища, сховище секретів). Має пріоритет над LicensePath.
Stream?LicenseStreamnullЛіцензія у вигляді потоку, читається один раз під час запуску. Має пріоритет над обома іншими джерелами.
stringMiddlewarePath"/doconut"Не використовується System.Web. Точка доступу сторінки завжди є обробником DocImage.axd, оголошеним у Web.config. Значення все ще перевіряється під час запуску (див. нижче).
boolResetLicensefalseНе використовується. Ліцензію читають один раз у DoconutHost.Initialize; перезапустіть пул додатків після заміни ліцензії.
DoconutPluginRegistryPluginRegistry—Реєстр лише для читання внесків плагінів, заповнюваний AddPlugin<T>().

Пріоритет ліцензій: LicenseStream → LicenseContent → LicensePath → автоматичне виявлення (див. License Setup).

Методи

AddPlugin<TPlugin>()

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

Реєструє плагін (Converter, DICOM). Fluent — повертає екземпляр параметрів. Annotation та Search — вбудовані ліцензовані функції і не використовують його.

Якщо жодна активна ліцензія не надає можливість плагіну, DoconutHost.Initialize викидає InvalidOperationException з Application_Start, і сайт відповідає на кожен запит порожнім 500, доки це не виправлено; повідомлення знаходиться у журналі подій Windows (див. Plugin System).

Add…Widget()

text
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)

Вбудовані віджети вимкнені за замовчуванням. Кожен виклик Add…Widget() вмикає кінцеві точки цього віджета у DocImage.axd і вимагає, щоб відповідний плагін був зареєстрований. Модуль ресурсів подає скрипт віджета незалежно від того, чи ви його увімкнули, тому віджет, який завантажується і малює, але відповідає 404 під час першої дії, не має цього виклику. Віджет Converter задокументовано у Converter Plugin.

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‑фабрики.

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

DoconutHost.Initialize перевіряє параметри перед створенням будь‑чого:

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.

MiddlewarePath перевіряється, хоча System.Web його ніколи не використовує, тому залиште його за замовчуванням. Як і будь‑яке виключення, викинуте з Application_Start, помилка валідації відображається як порожній 500 на кожному запиті, а повідомлення записується у журнал подій Windows.

Загальні налаштування

csharp
// Production: явна ліцензія, все інше — у безпечному режимі за замовчуванням.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Користувацький шлях ресурсу (наприклад, щоб уникнути конфлікту маршруту). Зберігайте ResPath переглядача та будь‑який MVC
// IgnoreRoute у відповідності з ним: "/docs-assets" означає ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

Коли ви змінюєте ResourcesPath, змініть одночасно три речі: параметр, ResPath віджета ('docs-assets/images' для "/docs-assets") і, у MVC, IgnoreRoute для шляху ресурсу (routes.IgnoreRoute("docs-assets/{*pathInfo}")). Кінцева точка DocImage.axd не переміщується: її шлях задається атрибутом path обробника у Web.config.

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