DoconutExtensions
Реєстрація сервісів та проміжного програмного забезпечення
DoconutExtensions (namespace Doconut.Middleware) — це статичний клас з трьома викликами, які виконує кожний хост Doconut: одна реєстрація сервісу та дві реєстрації проміжного програмного забезпечення.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // ПЕРЕД UseDoconut()
app.UseDoconut();AddDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)Створює DoconutOptions, швидко перевіряє їх (див. DoconutOptions → Перевірка запуску) та реєструє повний граф сервісів:
| Сервіс | Тривалість життя | Роль |
|---|---|---|
DoconutOptions | Singleton | Об’єкт конфігурації |
IViewerFactory | Singleton | Відображає розширення до переглядачів форматів |
IDocumentSessionManager | Singleton | Кеш токен → сесія (IMemoryCache також зареєстровано) |
IDoconutLicenseService | Singleton | Ліцензія завантажується один раз під час запуску (пріоритет: LicenseStream → LicenseContent → LicensePath → автоматичний пошук) |
PageImageService | Singleton | Конвеєр обробки сторінок‑зображень (водяний знак/повернення/масштабування/анотації) |
| Безпека документу (сховище доступу) | Singleton | Надає права для зв’язку токен‑сесія |
Viewer | Transient | Публічний інтерфейс відкриття/закриття |
DocumentConverter | Transient | Інтерфейс конвертації — потребує плагін Converter |
Health check "doconut" | — | Повідомляє стан ліцензії/закінчення терміну через перевірки здоров’я ASP.NET |
Дві важливі поведінки:
- Converter потребує свій плагін. Отримання
DocumentConverterбезoptions.AddPlugin<ConverterPlugin>()викликає помилку:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- Перевірка прав плагіна виконується під час запуску. Відсутня ліцензія, застарілий файл
TRIALабо платна ліцензія без зареєстрованої можливості плагіна призводить до помилки під часAddDoconut(). Тимчасові/демо‑реєстрації залишаються діючими після дати закінчення, тоді як механізми під час виконання відкликають прострочені можливості.
Перевірка здоров’я інтегрується зі стандартним механізмом ASP.NET Core — налаштуйте її, якщо хочете отримати стан ліцензії на вашому ендпоінті здоров’я:
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Додає проміжне програмне забезпечення Doconut для обробки сторінок‑зображень. Воно відповідає на кожен запит, що містить параметр запиту ?token= — сторінки, мініатюри, пошук, анотації, дії зі сторінками (повна таблиця запитів знаходиться в Core Concepts → How the Viewer Works). Коли UnsafeMode є false, шар безпеки документу підключається автоматично перед ним.
Зразок посилання маршрутизує запити віджету через гілку шляху:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Обслуговує вбудовані JS, CSS, зображення та шрифти за адресою DoconutOptions.ResourcesPath (за замовчуванням /doconut-res). Це файли, для яких Viewer.ReferenceCss() / ReferenceScripts() генерують теги.
Завжди викликайте його перед UseDoconut(). Якщо область переглядача залишається порожньою, а консоль браузера показує 404 для /doconut-res/..., цей виклик відсутній або розташований неправильно.
Ordering recap
app.UseRouting();
app.UseSession(); // необхідно коли UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut виклик
app.UseDoconut(); // 2nd Doconut виклик (або через MapWhen гілку)Чи була ця сторінка корисною?