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.

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 → Startvalidering), och registrerar hela tjänstgrafen:

TjänstLivstidRoll
DoconutOptionsSingletonKonfigurationsobjektet
IViewerFactorySingletonMappar utökningar till formatvisare
IDocumentSessionManagerSingletonToken → sessionscache (IMemoryCache är också registrerad)
IDoconutLicenseServiceSingletonLicens laddas en gång vid start (prioritet: LicenseStreamLicenseContentLicensePath → autosökning)
PageImageServiceSingletonPipeline för sidbilder (vattenstämpel/rotera/skala/annotationer)
Document security (access store)SingletonBeviljningar för token‑till‑sessionsbindning
ViewerTransientDen publika öppna/stänga‑fasaden
DocumentConverterTransientKonverteringsfasad — kräver Converter‑pluginet
DistributedDocumentPublisherPublicerar 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 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, en äldre TRIAL‑fil eller en betald licens utan en registrerad plugins funktionalitet 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 standardiserade 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‑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:

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.

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:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // opt-in background publish queue
IServiceCollection AddDoconutDistributedWidgets(...)        // shared backing store for widget uploads

Läs‑sidan är en separat middleware från paketet Doconut.Clouds:

text
IApplicationBuilder UseDoconutCloud<THandler>(
    this IApplicationBuilder app,
    Action<CloudOptions>? configure = null,
    string pathPrefix = "/doconut-cloud")
    where THandler : BaseCloudHandler

UseDoconutWebFarm(...) och WebFarmOptions finns inte i denna version. Se migrationsguide för en inställning‑för‑inställning‑mappning.

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 hjälpsam?