DoconutExtensions
Registrering av tjänster och middleware
DoconutExtensions (namespace Doconut.Middleware) är den statiska klassen med de tre anrop som varje Doconut‑värd gör: en tjänstregistrering och två middleware‑registreringar.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)Skapar DoconutOptions, validerar dem snabbt (se DoconutOptions → Startup validation), och registrerar hela tjänstegrafen:
| Tjänst | Livstid | Roll |
|---|---|---|
DoconutOptions | Singleton | Konfigurationsobjektet |
IViewerFactory | Singleton | Mappar extensioner till formatvisare |
IDocumentSessionManager | Singleton | Token → sessionscache (IMemoryCache är också registrerad) |
IDoconutLicenseService | Singleton | Licens laddas en gång vid start (precedens: LicenseStream → LicenseContent → LicensePath → autosökning) |
PageImageService | Singleton | Sida‑bild pipeline (vattenstämpel/rotera/skala/annotationer) |
| Document security (access store) | Singleton | Dokument‑säkerhet (åtkomstlager) |
Viewer | Transient | Den offentliga öppna/stänga fasaden |
DocumentConverter | Transient | Konverteringsfasad — kräver Converter‑plugin |
Health check "doconut" | — | Rapporterar licens‑/utgångstillstånd via ASP.NET health checks |
Två beteenden som är värda att känna till:
- Converter kräver sin plugin. Att lösa
DocumentConverterutanoptions.AddPlugin<ConverterPlugin>()kastar:
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- Plugin‑behörighet valideras vid start. En saknad licens, gammal
TRIAL‑fil eller betald licens utan en registrerad plugins funktionalitet misslyckas vidAddDoconut()‑tiden. Tillfälliga/Demo‑registreringar överlever sitt utgångsdatum, medan körningstillstånd återkallar de utgångna funktionerna.
Hälsokontrollen integreras med den standard ASP.NET Core‑mekanismen — mappa den om du vill ha licenstillstånd på din hälsoslutpunkt:
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Lägger till Doconut page‑image‑middleware. Den svarar på varje begäran som innehåller en ?token=‑frågeparameter — sidor, miniatyrbilder, sökningar, annotationer, sidåtgärder (den fullständiga begärantabellen finns i Core Concepts → How the Viewer Works). När UnsafeMode är false kopplas dokument‑säkerhetslagret in automatiskt innan den.
Referensexemplet dirigerar widgetens begäranden genom en sökvägsgren:
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Serverar den inbäddade JS, CSS, bilder och teckensnitt på DoconutOptions.ResourcesPath (standard /doconut-res). Detta är filerna som Viewer.ReferenceCss() / ReferenceScripts() genererar taggar för.
Anropa alltid den innan UseDoconut(). Om visningsområdet förblir tomt och webbläsarkonsolen visar 404‑fel för /doconut-res/..., saknas detta anrop eller är felplacerat.
Ordering recap
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)Var den här sidan till hjälp?