DoconutExtensions
Registrering av tjänster och middleware
DoconutExtensions (namnrymd 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 → Startvalidering), och registrerar hela tjänstgrafen:
| Tjänst | Livstid | Roll |
|---|---|---|
DoconutOptions | Singleton | Konfigurationsobjektet |
IViewerFactory | Singleton | Mappar utökningar till formatvisare |
IDocumentSessionManager | Singleton | Token → sessionscache (IMemoryCache är också registrerad) |
IDoconutLicenseService | Singleton | Licens laddas en gång vid start (prioritet: LicenseStream → LicenseContent → LicensePath → autosökning) |
PageImageService | Singleton | Pipeline för sidbilder (vattenstämpel/rotera/skala/annotationer) |
| Document security (access store) | Singleton | Beviljningar för token‑till‑sessionsbindning |
Viewer | Transient | Den publika öppna/stänga‑fasaden |
DocumentConverter | Transient | Konverteringsfasad — kräver Converter‑pluginet |
DistributedDocumentPublisher | — | Publicerar ett dokuments artefakter till delat lagringsutrymme |
Health check "doconut" | — | Rapporterar licens-/utgångstillstånd via ASP.NET health checks |
Det finns inget motsvarande anrop i det tidigare .NET Standard‑biblioteket. Det konstruerade new Viewer(cache, accessor) per begäran och skickade alternativ till middleware; båda ersätts av denna enda registrering.
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, en äldre
TRIAL‑fil eller en betald licens utan en registrerad plugins funktionalitet misslyckas vidAddDoconut()‑tiden. Tillfälliga/Demo‑registreringar överlever sitt utgångsdatum, medan körningstidens grindar återkallar de utgångna funktionerna.
Hälsokontrollen integreras med den standardiserade 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‑middleware för sidbilder. Den svarar på varje begäran som innehåller en ?token=‑frågeparameter — sidor, miniatyrbilder, sök, 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 före den.
Den tar inga argument. Att skicka en DoconutOptions‑instans här var det tidigare bibliotekets form och kompilerar inte längre.
Referensexemplet dirigerar widget‑begäran genom en sökvägsgren, vilket behåller den historiska begäranformen:
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.
Detta är den stödjade ersättningen för att manuellt koppla in inbäddad‑resurs‑middleware med app.UseMiddleware<EmbeddedResourceMiddleware>().
Serving from shared storage
Ytterligare två registreringar finns för distributioner där noden som renderar ett dokument inte nödvändigtvis är noden som serverar dess sidor. Båda täcks helt i Distribuerade distributioner; signaturerna är:
IServiceCollection AddDoconutDistributedAsyncPublish(...) // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...) // shared backing store for widget uploadsLäs‑sidan är en separat middleware från paketet Doconut.Clouds:
IApplicationBuilder UseDoconutCloud<THandler>(
this IApplicationBuilder app,
Action<CloudOptions>? configure = null,
string pathPrefix = "/doconut-cloud")
where THandler : BaseCloudHandlerUseDoconutWebFarm(...) och WebFarmOptions finns inte i denna version. Se migrationsguide för en inställning‑för‑inställning‑mappning.
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 hjälpsam?