DoconutExtensions
Enregistrement de services et de middleware
DoconutExtensions (namespace Doconut.Middleware) est la classe statique contenant les trois appels que chaque hôte Doconut effectue : un enregistrement de service et deux enregistrements de middleware.
builder.Services.AddDoconut(options => { /* … */ });
// …
app.UseDoconutResources(); // BEFORE UseDoconut()
app.UseDoconut();AddDoconut
IServiceCollection AddDoconut(this IServiceCollection services, Action<DoconutOptions>? configure = null)Construit les DoconutOptions, les valide en mode fail‑fast (voir DoconutOptions → Validation au démarrage), et enregistre le graphe complet des services :
| Service | Lifetime | Role |
|---|---|---|
DoconutOptions | Singleton | L'objet de configuration |
IViewerFactory | Singleton | Mappe les extensions aux visionneuses de format |
IDocumentSessionManager | Singleton | Cache token → session (IMemoryCache est également enregistré) |
IDoconutLicenseService | Singleton | Licence chargée une fois au démarrage (priorité : LicenseStream → LicenseContent → LicensePath → recherche automatique) |
PageImageService | Singleton | Pipeline d'image de page (filigrane/rotation/redimensionnement/annotations) |
| Document security (access store) | Singleton | Sécurité du document (magasin d'accès) |
Viewer | Transient | La façade publique d'ouverture/fermeture |
DocumentConverter | Transient | Façade de conversion — nécessite le plugin Converter |
Contrôle de santé "doconut" | — | Rapporte l'état de licence/expiration via les contrôles de santé ASP.NET |
Deux comportements utiles à connaître :
- Le convertisseur nécessite son plugin. Résoudre
DocumentConvertersansoptions.AddPlugin<ConverterPlugin>()génère :
InvalidOperationException: No IDocumentConverter is registered. Add the converter plugin: options.AddPlugin<Doconut.Plugins.Converter.ConverterPlugin>().- L'éligibilité du plugin est validée au démarrage. Une licence manquante, un fichier
TRIALhérité, ou une licence payante sans la capacité du plugin enregistré entraîne un échec lors de l’appelAddDoconut(). Les enregistrements temporaires/démo survivent à leur date d’expiration, tandis que les garde‑temps 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 voulez l'état de la licence sur votre point de terminaison de santé :
app.MapHealthChecks("/health");UseDoconut
IApplicationBuilder UseDoconut(this IApplicationBuilder app)Ajoute le middleware d'image de page Doconut. Il répond à chaque requête contenant le 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 visionneur fonctionne). Lorsque UnsafeMode est false, la couche de sécurité du document est automatiquement branchée avant lui.
L'exemple de référence dirige les requêtes du widget via une branche de chemin :
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());UseDoconutResources
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)Serre les fichiers JS, CSS, images et polices intégré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 visionneur reste vide et que la console du navigateur affiche des 404 pour /doconut-res/..., cet appel est manquant ou mal placé.
Récapitulatif de l'ordre
app.UseRouting();
app.UseSession(); // required when UnsafeMode = false
app.UseDoconutResources(); // 1st Doconut call
app.UseDoconut(); // 2nd Doconut call (or via a MapWhen branch)Cette page vous a-t-elle été utile ?