DoconutExtensions

Registrace služeb a middleware

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

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

AddDoconut

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

Vytváří DoconutOptions, provádí jejich okamžitou validaci (viz DoconutOptions → Startup validation) a registruje celý graf služeb:

SlužbaŽivotnostRole
DoconutOptionsSingletonKonfigurační objekt
Služba mezipaměti relaceSingletonToken → mezipaměť relace (IMemoryCache je také registrován)
IDoconutLicenseServiceSingletonLicence načtena jednou při spuštění (precedence: LicenseStream → LicenseContent → LicensePath → auto-search)
Pipeline pro obrázky stránekSingletonProvádí zpracování obrázků pro stránky (vodoznak, otáčení, škálování, anotace)
Bezpečnost dokumentu (úložiště přístupu)SingletonPovolení pro vazbu token‑session
ViewerTransientVeřejná fasáda pro otevření/uzavření
DocumentConverterTransientFasáda konverze — vyžaduje plugin Converter
DistributedDocumentPublisher—Publikuje 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í. Konstrukovala new Viewer(cache, accessor) na požadavek a předávala možnosti middleware; oba jsou nahrazeny touto jedinou registrací.

Dvě chování, která stojí za vědění:

  • Converter vyžaduje svůj plugin. Vyřešení 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 startu. Chybějící licence, starý soubor TRIAL nebo placená licence bez registrované schopnosti pluginu selže v čase AddDoconut(). Dočasné/Demo registrace přežijí datum expirace, zatímco runtime brány odeberou vypršené schopnosti.

Health check 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ává middleware Doconut pro obrázky stránek. Odpovídá na každý požadavek nesoucí parametr dotazu ?token= — stránky, náhledy, vyhledávání, anotace, akce stránek (úplná tabulka požadavků je v Základní koncepty → Jak funguje prohlížeč). Když je UnsafeMode false, vrstva zabezpečení dokumentu je automaticky zapojena před ní.

Nevyžaduje žádné argumenty. Předání instance DoconutOptions zde bylo tvarem předchozí knihovny 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). Toto jsou soubory, pro které Viewer.ReferenceCss() / ReferenceScripts() generují značky.

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

Jedná se o podporovanou náhradu za ruční zapojení middleware pro zpracování vložených zdrojů.

Serving from shared storage

Existují další dvě registrace pro nasazení, kde uzel, který vykresluje dokument, není nutně uzel, který obsluhuje jeho stránky. Obě jsou kompletně pokryty v Distributed Deployments; podpisy jsou:

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // opt-in fronta publikování na pozadí
IServiceCollection AddDoconutDistributedWidgets(...)        // sdílené úložiště pro nahrávání widgetů

Č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();          // vyžadováno, když UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut volání
app.UseDoconut();          // 2nd Doconut volání (nebo přes větev MapWhen)

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