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(); // FÖRE UseDoconut()
app.UseDoconut();

AddDoconut

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

Bygger DoconutOptions, validerar dem fail‑fast (se DoconutOptions → Startup validation), och registrerar hela tjänstgrafen:

TjänstLivstidRoll
DoconutOptionsSingletonKonfigurationsobjektet
Session cache-tjänstSingletonToken → sessionscache (IMemoryCache är också registrerad)
IDoconutLicenseServiceSingletonLicens laddas en gång vid start (prioritet: LicenseStream → LicenseContent → LicensePath → autosökning)
Page-image pipelineSingletonUtför bildbehandling för sidor (vattenstämpel, rotera, skala, annotationer)
Dokumentssäkerhet (åtkomstlager)SingletonBeviljar bindning mellan token och session
ViewerTransientDet offentliga öppna/stänga‑gränssnittet
DocumentConverterTransientKonverteringsgränssnitt — 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 DocumentConverter utan options.AddPlugin<ConverterPlugin>() kastar:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Pluginbehörighet valideras vid start. En saknad licens, gammal TRIAL‑fil, eller betald licens utan en registrerad plugins kapacitet misslyckas vid AddDoconut()‑tid. Tillfälliga/Demo‑registreringar överlever sitt utgångsdatum, medan körningstidens grindar återkallar de utgångna funktionerna.

Health check integreras med den standard ASP.NET Core‑mekanismen — mappa den om du vill ha licenstillstånd på din health‑endpoint:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Lägger till Doconut page‑image middleware. Den svarar på varje begäran som bär en ?token=‑frågeparameter — sidor, miniatyrer, sök, annotationer, sidåtgärder (den fullständiga begärantabellen finns i Core Concepts → Hur visaren fungerar). När UnsafeMode är false, kopplas dokument‑säkerhetslagret in automatiskt före den.

Det tar inga argument. Att skicka en DoconutOptions‑instans här var den tidigare bibliotekets form och kompileras inte längre.

Referensexemplet dirigerar widgetens begäranden genom en sökvägsgren, och behåller den historiska begärandeformen:

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 typsnitt 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 ansluta middleware för hantering av inbäddade resurser.

Serving from shared storage

Två ytterligare 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(...)   // valfri bakgrundspubliceringskö
IServiceCollection AddDoconutDistributedWidgets(...)        // delad lagringsplats för widget-uppladdningar

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 mappingen inställning‑för‑inställning.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // krävs när UnsafeMode = false
app.UseDoconutResources(); // 1:a Doconut-anrop
app.UseDoconut();          // 2:a Doconut-anrop (eller via en MapWhen-gren)

Var den här sidan hjälpsam?