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.

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

AddDoconut

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

Construit les DoconutOptions, les valide immédiatement (voir DoconutOptions → Validation au démarrage), et enregistre le graphe complet des services :

ServiceDurée de vieRôle
DoconutOptionsSingletonL'objet de configuration
IViewerFactorySingletonMappe les extensions aux visionneuses de format
IDocumentSessionManagerSingletonCache de session Token → session (IMemoryCache est également enregistré)
IDoconutLicenseServiceSingletonLicence chargée une fois au démarrage (priorité : LicenseStreamLicenseContentLicensePath → recherche automatique)
PageImageServiceSingletonPipeline d'image de page (filigrane/rotation/redimensionnement/annotations)
Sécurité du document (magasin d'accès)SingletonAutorisations de liaison token‑session
ViewerTransientFacade publique d'ouverture/fermeture
DocumentConverterTransientFacade de conversion — nécessite le plugin Converter
Vérification de santé "doconut"Signale l'état de licence/expiration via les vérifications de santé ASP.NET

Deux comportements à connaître :

  • Le convertisseur nécessite son plugin. Résoudre DocumentConverter sans options.AddPlugin<ConverterPlugin>() lève :
text
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 TRIAL hérité, ou une licence payante sans la capacité du plugin enregistré échoue au moment de 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.

La vérification de santé s'intègre au mécanisme standard d'ASP.NET Core — mappez‑la 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'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 Viewer fonctionne). Lorsque UnsafeMode est false, la couche de sécurité du document est automatiquement branchée avant celui‑ci.

L'exemple de référence dirige les requêtes du widget via une branche de chemin :

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

UseDoconutResources

text
IApplicationBuilder UseDoconutResources(this IApplicationBuilder app)

Desserve les JS, CSS, images et polices intégrés à DoconutOptions.ResourcesPath (par défaut /doconut-res). Ce sont les fichiers pour lesquels Viewer.ReferenceCss() / ReferenceScripts() génèrent des balises.

Appelez‑le toujours avant UseDoconut(). Si la zone du viewer 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

csharp
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 ?