DoconutOptions
Настройка сервисов Doconut
DoconutOptions (namespace Doconut) — единственный объект конфигурации для всего SDK. Вы настраиваете его один раз, в обратном вызове, который передаёте в DoconutHost.Initialize в Application_Start.
Doconut.DoconutHost.Initialize(options =>
{
options.LicensePath = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Свойства
| Тип | Свойство | По умолчанию | Описание |
|---|---|---|---|
bool | UnsafeMode | false | Когда false, DocImage.axd обслуживает страницу только для ASP.NET‑сессии, которая открыла документ (или, в ферме, для браузера с подписанным билетом). Когда true, обслуживается любой запрос, содержащий токен. Оставьте его false — см. Сессии и безопасность. |
bool | ShowDoconutInfo | false | Когда true, запрос DocImage.axd без токена отвечает Doconut <version> is running on <host> вместо 404. Полезно как проверка дымового теста; оставьте false в продакшене. |
string | ResourcesPath | "/doconut-res" | Префикс URL, под которым модуль ресурсов обслуживает встроенные скрипты, стили и изображения. |
string | LicensePath | "" | Полный путь к файлу лицензии. Пусто → следующий источник лицензии, затем автоматическое обнаружение; если ничего не найдено → оценочная версия с водяным знаком без возможностей. |
string | LicenseContent | "" | Сырой контент лицензии (база данных, переменная окружения, хранилище секретов). Имеет приоритет над LicensePath. |
Stream? | LicenseStream | null | Лицензия как поток, читается один раз при запуске. Имеет приоритет над обоими другими источниками. |
string | MiddlewarePath | "/doconut" | Не используется System.Web. Точка доступа страницы всегда обработчик DocImage.axd, объявленный в Web.config. Значение всё равно проверяется при запуске (см. ниже). |
bool | ResetLicense | false | Не используется. Лицензия читается один раз, в DoconutHost.Initialize; перезапустите пул приложений после замены лицензии. |
DoconutPluginRegistry | PluginRegistry | — | Регистр только для чтения вкладов плагинов, заполняется AddPlugin<T>(). |
Приоритет лицензий: LicenseStream → LicenseContent → LicensePath → автоматическое обнаружение (см. Настройка лицензии).
Методы
AddPlugin<TPlugin>()
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()Регистрирует плагин (Converter, DICOM). Fluent — возвращает экземпляр options. Annotation и Search — встроенные лицензированные функции и не используют его.
Если активная лицензия не предоставляет возможности плагина, DoconutHost.Initialize бросает InvalidOperationException из Application_Start, и сайт отвечает на каждый запрос пустым 500, пока это не исправлено; сообщение находится в журнале событий Windows (см. Система плагинов).
Add…Widget()
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)Встроенные виджеты выключены по умолчанию. Каждый вызов Add…Widget() включает конечные точки этого виджета на DocImage.axd и требует, чтобы соответствующий плагин был зарегистрирован. Модуль ресурсов обслуживает скрипт виджета независимо от того, включили вы его или нет, поэтому виджет, который загружается и отрисовывается, но отвечает 404 при первом действии, пропускает этот вызов. Виджет Converter задокументирован в Плагин Converter.
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‑фабрике.
Проверка при запуске
DoconutHost.Initialize проверяет параметры перед построением чего-либо:
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.
Общие конфигурации
// 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.
Была ли эта страница полезной?