DoconutExtensions

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

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

csharp
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();

AddDoconut

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

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

ServiceLifetimeRole
DoconutOptionsSingletonОб’єкт конфігурації
IViewerFactorySingletonВідображає розширення до переглядачів форматів
IDocumentSessionManagerSingletonТокен → кеш сесії (IMemoryCache також зареєстровано)
IDoconutLicenseServiceSingletonЛіцензія завантажується один раз під час запуску (пріоритет: LicenseStreamLicenseContentLicensePath → автоматичний пошук)
PageImageServiceSingletonКонвеєр обробки зображень сторінок (водяний знак/повернення/масштаб/анотації)
Document security (access store)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 — додайте її, якщо хочете отримати стан ліцензії на вашому health‑endpoint:

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();          // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut();          // 2nd Doconut call (or via a MapWhen branch)

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