DoconutExtensions

Enregistrement des services et du middleware

DoconutExtensions (namespace Doconut.Middleware) est la classe statique avec les trois appels que chaque hôte Doconut effectue : un enregistrement de service et deux enregistrements de middleware.

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

AddDoconut

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

Construit le DoconutOptions, les valide en échec rapide (voir DoconutOptions → Validation du démarrage), et enregistre le graphe complet des services :

ServiceDurée de vieRôle
DoconutOptionsSingletonL'objet de configuration
Service de cache de sessionSingletonToken → cache de session (IMemoryCache est également enregistré)
IDoconutLicenseServiceSingletonLicence chargée une fois au démarrage (priorité : LicenseStream → LicenseContent → LicensePath → recherche automatique)
Pipeline d'images de pageSingletonEffectue le traitement d'images pour les pages (filigrane, rotation, mise à l'échelle, annotations)
Sécurité du document (magasin d'accès)SingletonAccorde la liaison token‑session
ViewerTransientLa façade publique d'ouverture/fermeture
DocumentConverterTransientFacade de conversion — nécessite le plugin Converter
DistributedDocumentPublisher—Publie les artefacts d'un document vers le stockage partagé
Health check "doconut"—Signale l'état de licence/expiration via les contrôles de santé ASP.NET

Il n'existe aucun appel équivalent dans la bibliothèque .NET Standard précédente. Elle construisait new Viewer(cache, accessor) par requête et passait les options au middleware ; les deux sont remplacés par cet enregistrement unique.

Deux comportements utiles à connaître :

  • Le Converter nécessite son plugin. Résoudre DocumentConverter sans options.AddPlugin<ConverterPlugin>() génère une exception :
text
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().
  • L'entitlement du plugin est validé au démarrage. Une licence manquante, un fichier TRIAL hérité, ou une licence payante sans la capacité d'un plugin enregistré échoue au moment AddDoconut(). Les enregistrements temporaires/Demo survivent à leur date d'expiration, tandis que les garde-fous d'exécution révoquent les capacités expirées.

Le contrôle de santé s'intègre au mécanisme standard d'ASP.NET Core — mappez‑le si vous souhaitez l'état de licence sur votre point de terminaison de santé :

csharp
app.MapHealthChecks("/health");

UseDoconut

text
IApplicationBuilder UseDoconut(this IApplicationBuilder app)

Ajoute le middleware d'images de page Doconut. Il répond à chaque requête contenant un paramètre de requête ?token= — pages, miniatures, recherche, annotations, actions de page (le tableau complet des requêtes se trouve dans Concepts de base → Comment le visualiseur fonctionne). Lorsque UnsafeMode est false, la couche de sécurité du document est automatiquement branchée avant lui.

Il ne prend aucun argument. Passer une instance DoconutOptions ici était la forme de la bibliothèque précédente et ne compile plus.

L'exemple de référence dirige les requêtes du widget via une branche de chemin, conservant la forme historique des requêtes :

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

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Serre les JS, CSS, images et polices embarqués à DoconutOptions.ResourcesPath (par défaut /doconut-res). Ce sont les fichiers pour lesquels Viewer.ReferenceCss() / ReferenceScripts() émettent des balises.

Appelez‑le toujours avant UseDoconut(). Si la zone du visualiseur reste vide et que la console du navigateur affiche des 404 pour /doconut-res/..., cet appel est manquant ou mal placé.

Ceci est le remplacement pris en charge pour brancher manuellement le middleware de gestion des ressources embarquées.

Serving from shared storage

Deux enregistrements supplémentaires existent pour les déploiements où le nœud qui rend un document n'est pas forcément le nœud qui sert ses pages. Les deux sont couverts de bout en bout dans Déploiements distribués ; les signatures sont :

text
IServiceCollection AddDoconutDistributedAsyncPublish(...)   // file d'attente de publication en arrière-plan opt-in
IServiceCollection AddDoconutDistributedWidgets(...)        // magasin de support partagé pour les téléchargements de widgets

La partie lecture est un middleware séparé du package Doconut.Clouds :

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

UseDoconutWebFarm(...) et WebFarmOptions n'existent pas dans cette version. Consultez le guide de migration pour le mappage paramètre par paramètre.

Ordering recap

csharp
app.UseRouting();
app.UseSession();          // requis lorsque UnsafeMode = false
app.UseDoconutResources(); // 1er appel Doconut
app.UseDoconut();          // 2e appel Doconut (ou via une branche MapWhen)

Cette page était-elle utile ?