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.

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

AddDoconut

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

Skapar DoconutOptions, validerar dem snabbt (se DoconutOptions → Startup validation), och registrerar hela tjänstgrafen:

TjänstLivstidRoll
DoconutOptionsSingletonKonfigurationsobjektet
IViewerFactorySingletonMappar filändelser till formatvisare
IDocumentSessionManagerSingletonToken → sessionscache (IMemoryCache är också registrerad)
IDoconutLicenseServiceSingletonLicens laddas en gång vid start (prioritet: LicenseStreamLicenseContentLicensePath → automatisk sökning)
PageImageServiceSingletonSida‑bild pipeline (vattenstämpel/rotera/skala/annotationer)
Document security (access store)SingletonBehörigheter för token‑till‑session bindning
ViewerTransientDen offentliga öppna/stänga‑fasaden
DocumentConverterTransientKonverteringsfasad — 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 DocumentConverter utan options.AddPlugin<ConverterPlugin>() kastar:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Plugin‑behörighet valideras vid start. En saknad licens, äldre TRIAL‑fil eller betald licens utan en registrerad plugins funktion misslyckas vid AddDoconut()‑tiden. Tillfälliga/Demo‑registreringar överlever sitt utgångsdatum, medan körningstidens grindar å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:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Lägger till Doconut sid‑bild middleware. Den svarar på varje begäran som innehåller en ?token=‑frågeparameter — sidor, miniatyrer, sök, annotationer, sidåtgärder (den fullständiga begärandetabellen 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:

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

UseDoconutResources

text
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

csharp
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?