DoconutExtensions

Реєстрація сервісів та проміжного програмного забезпечення

DoconutExtensions (namespace Doconut.Middleware) — це статичний клас з трьома викликами, які виконує кожний хост Doconut: одна реєстрація сервісу та дві реєстрації проміжного програмного забезпечення.

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // ПЕРЕД UseDoconut()
app.UseDoconut();

AddDoconut

text
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)

Створює DoconutOptions, швидко перевіряє їх (див. DoconutOptions → Перевірка запуску) та реєструє повний граф сервісів:

СервісТривалість життяРоль
DoconutOptionsSingletonОб’єкт конфігурації
IViewerFactorySingletonВідображає розширення до переглядачів форматів
IDocumentSessionManagerSingletonКеш токен → сесія (IMemoryCache також зареєстровано)
IDoconutLicenseServiceSingletonЛіцензія завантажується один раз під час запуску (пріоритет: LicenseStream → LicenseContent → LicensePath → автоматичний пошук)
PageImageServiceSingletonКонвеєр обробки сторінок‑зображень (водяний знак/повернення/масштабування/анотації)
Безпека документу (сховище доступу)SingletonНадає права для зв’язку токен‑сесія
ViewerTransientПублічний інтерфейс відкриття/закриття
DocumentConverterTransientІнтерфейс конвертації — потребує плагін Converter
Health check "doconut"—Повідомляє стан ліцензії/закінчення терміну через перевірки здоров’я ASP.NET

Дві важливі поведінки:

  • Converter потребує свій плагін. Отримання DocumentConverter без options.AddPlugin<ConverterPlugin>() викликає помилку:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Перевірка прав плагіна виконується під час запуску. Відсутня ліцензія, застарілий файл TRIAL або платна ліцензія без зареєстрованої можливості плагіна призводить до помилки під час AddDoconut(). Тимчасові/демо‑реєстрації залишаються діючими після дати закінчення, тоді як механізми під час виконання відкликають прострочені можливості.

Перевірка здоров’я інтегрується зі стандартним механізмом ASP.NET Core — налаштуйте її, якщо хочете отримати стан ліцензії на вашому ендпоінті здоров’я:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Додає проміжне програмне забезпечення Doconut для обробки сторінок‑зображень. Воно відповідає на кожен запит, що містить параметр запиту ?token= — сторінки, мініатюри, пошук, анотації, дії зі сторінками (повна таблиця запитів знаходиться в Core Concepts → How the Viewer Works). Коли UnsafeMode є false, шар безпеки документу підключається автоматично перед ним.

Зразок посилання маршрутизує запити віджету через гілку шляху:

csharp
app.MapWhen(
    ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
    branch => branch.UseDoconut());

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Обслуговує вбудовані JS, CSS, зображення та шрифти за адресою DoconutOptions.ResourcesPath (за замовчуванням /doconut-res). Це файли, для яких Viewer.ReferenceCss() / ReferenceScripts() генерують теги.

Завжди викликайте його перед UseDoconut(). Якщо область переглядача залишається порожньою, а консоль браузера показує 404 для /doconut-res/..., цей виклик відсутній або розташований неправильно.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // необхідно коли UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut виклик
app.UseDoconut();          // 2nd Doconut виклик (або через MapWhen гілку)

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