Rozšíření Doconut
Registrace služeb a middleware
DoconutExtensions (namespace Doconut.Middleware) je statická třída se třemi voláními, která každý host Doconut provádí: jedno registrace služby a dvě registrace middleware.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // PŘED UseDoconut()
app.UseDoconut();PřidatDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)Vytváří DoconutOptions, provádí jejich okamžitou validaci (viz DoconutOptions → Startup validation) a registruje celý graf služeb:
| Služba | Životnost | Role |
|---|---|---|
DoconutOptions | Singleton | Objekt konfigurace |
IViewerFactory | Singleton | Mapuje rozšíření na prohlížeče formátů |
IDocumentSessionManager | Singleton | Token → cache relace (IMemoryCache je také registrován) |
IDoconutLicenseService | Singleton | Licence načtena jednou při spuštění (priorita: LicenseStream → LicenseContent → LicensePath → auto-search) |
PageImageService | Singleton | Pipeline pro stránku‑obrázek (vodoznak/rotace/škálování/poznámky) |
| Zabezpečení dokumentu (úložiště přístupů) | Singleton | Oprávnění pro vazbu token‑na‑relaci |
Viewer | Transient | Veřejné rozhraní otevření/uzavření |
DocumentConverter | Transient | Rozhraní konverze — vyžaduje plugin Converter |
Kontrola zdraví "doconut" | — | Zpráva o stavu licence/expirace prostřednictvím ASP.NET health checks |
Dvě chování, která stojí za to znát:
- Converter vyžaduje svůj plugin. Vyřešení
DocumentConverterbezoptions.AddPlugin<ConverterPlugin>()vyvolá výjimku:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- Oprávnění pluginu je ověřeno při spuštění. Chybějící licence, starý soubor
TRIALnebo placená licence bez registrované schopnosti pluginu selže v časeAddDoconut(). Registrace typu Temporary/Demo přežijí datum expirace, zatímco runtime brány odeberou vypršené schopnosti.
Kontrola zdraví se integruje se standardním mechanismem ASP.NET Core — namapujte ji, pokud chcete stav licence na vašem health endpointu:
app.MapHealthChecks("/health");PoužítDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Přidává middleware Doconut pro stránku‑obrázek. Odpovídá na každý požadavek obsahující dotazový parametr ?token= — stránky, náhledy, vyhledávání, poznámky, akce na stránce (úplná tabulka požadavků je v Základní koncepty → Jak funguje prohlížeč). Když je UnsafeMode false, vrstva zabezpečení dokumentu je automaticky zapojena před ní.
Referenční ukázka směruje požadavky widgetu přes větev cesty:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());PoužítDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Servíruje vložené JS, CSS, obrázky a fonty na DoconutOptions.ResourcesPath (výchozí /doconut-res). Toto jsou soubory, pro které Viewer.ReferenceCss() / ReferenceScripts() generují značky.
Vždy jej zavolejte před UseDoconut(). Pokud je oblast prohlížeče prázdná a konzole prohlížeče ukazuje 404 pro /doconut-res/..., toto volání chybí nebo je na špatném místě.
Přehled pořadí
app.UseRouting();
app.UseSession(); // vyžadováno, když UnsafeMode = false
app.UseDoconutResources(); // první volání Doconut
app.UseDoconut(); // 2. volání Doconut (nebo přes MapWhen větev)Byla tato stránka užitečná?