DoconutExtensions

Registrace služby a middleware

DoconutExtensions (namespace Doconut.Middleware) je statická třída se třemi voláními, která provádí každý hostitel Doconut: jedna registrace služby a dvě registrace middleware.

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

AddDoconut

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

Vytvoří DoconutOptions, prověří je okamžitě (fail-fast) (viz DoconutOptions → Ověření při spuštění) a zaregistruje celý graf služeb:

SlužbaŽivotnostRole
DoconutOptionsSingletonKonfigurační objekt
IViewerFactorySingletonMapuje rozšíření na prohlížeče formátů
IDocumentSessionManagerSingletonToken → cache relace (IMemoryCache je také zaregistrován)
IDoconutLicenseServiceSingletonLicence načtena jednou při spuštění (priorita: LicenseStreamLicenseContentLicensePath → automatické hledání)
PageImageServiceSingletonPipeline pro obrázky stránek (vodoznak/rotace/škálování/poznámky)
Document security (access store)SingletonOprávnění pro vazbu token‑na‑relaci
ViewerTransientVeřejná rozhraní pro otevření/uzavření
DocumentConverterTransientRozhraní pro konverzi — vyžaduje plugin Converter
DistributedDocumentPublisherPublikuje artefakty dokumentu do sdíleného úložiště
Health check "doconut"Zpráva o stavu licence/expirace prostřednictvím ASP.NET health checks

V předchozí knihovně .NET Standard neexistuje ekvivalentní volání. Vytvářela new Viewer(cache, accessor) pro každý požadavek a předávala možnosti middleware; obojí je nahrazeno touto jedinou registrací.

Existují dva chování, která stojí za to znát:

  • Converter vyžaduje svůj plugin. Pokus o získání DocumentConverter bez options.AddPlugin<ConverterPlugin>() vyvolá výjimku:
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • Oprávnění pluginu je ověřováno při spuštění. Chybějící licence, starý soubor TRIAL nebo placená licence bez registrované schopnosti pluginu selže v čase volání AddDoconut(). Dočasné/Demo registrace přežijí datum expirace, zatímco runtime brány odeberou vypršené schopnosti.

Health check se integruje se standardním mechanismem ASP.NET Core — namapujte jej, pokud chcete stav licence na vašem health endpointu:

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Přidá middleware pro obrázky stránek Doconut. Odpovídá na každý požadavek obsahující dotazový parametr ?token= — stránky, miniatury, vyhledávání, poznámky, akce stránek (úplná tabulka požadavků je v Základní koncepty → Jak funguje Viewer). Když je UnsafeMode nastaven na false, vrstva zabezpečení dokumentu je automaticky zapojena před ním.

Nepřijímá žádné argumenty. Předání instance DoconutOptions zde bylo ve staré knihovně a již se nekompiluje.

Referenční ukázka směruje požadavky widgetu přes větev cesty, zachovávajíc historický tvar požadavku:

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

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Obsluhuje vložené JS, CSS, obrázky a fonty na DoconutOptions.ResourcesPath (výchozí /doconut-res). Jedná se o soubory, pro které Viewer.ReferenceCss() / ReferenceScripts() generují značky.

Vždy jej zavolejte před UseDoconut(). Pokud je oblast prohlížeče prázdná a konzole prohlížeče zobrazuje 404 chyby pro /doconut-res/..., toto volání chybí nebo je na špatném místě.

Toto je podporovaná náhrada za ruční zapojení middleware pro vložené zdroje pomocí app.UseMiddleware<EmbeddedResourceMiddleware>().

Serving from shared storage

Další dvě registrace existují pro nasazení, kde uzel, který vykresluje dokument, není nutně uzel, který obsluhuje jeho stránky. Obě jsou kompletně pokryty v Distribuovaná nasazení; signatury jsou:

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

Čtecí část je samostatný middleware z balíčku Doconut.Clouds:

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

UseDoconutWebFarm(...) a WebFarmOptions v tomto vydání neexistují. Viz průvodce migrací pro mapování nastavení po nastavení.

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)

Byla tato stránka užitečná?