DoconutOptions

Configurer les services Doconut

DoconutOptions (namespace Doconut) est l'objet de configuration unique pour l'ensemble du SDK. Vous le configurez une fois, à l'intérieur de AddDoconut(), et il est enregistré en tant que singleton.

csharp
builder.Services.AddDoconut(options =>
{
    options.LicensePath     = "Doconut.Viewer.lic";
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Propriétés

TypePropriétéValeur par défautDescription
boolShowDoconutInfofalseLorsque true, une requête middleware sans jeton renvoie une bannière de version (Doconut <version> is running on <host>) au lieu de 404. Utile comme test de fumée ; laissez false en production.
boolUnsafeModefalseLorsque true, ignore la vérification de sécurité de session ASP.NET sur les requêtes de page. Laissez false en production (voir Concepts de base → Sessions & Sécurité).
stringMiddlewarePath"/doconut"Valeur de coordination pour le point de terminaison page-image. Elle est validée, mais ne monte pas de branche de pipeline ; maintenez‑la alignée avec le mappage réel UseDoconut() et le client BasePath.
stringResourcesPath"/doconut-res"Préfixe de chemin URL pour les ressources JS/CSS/image/font intégrées.
stringLicensePath""Chemin vers le fichier de licence. Vide → source de licence suivante, puis découverte automatique ; rien trouvé → état d'évaluation filigrané sans capacités.
stringLicenseContent""Contenu brut de licence XML (base de données, variable d'environnement, gestionnaire de secrets). Prend le pas sur LicensePath.
Stream?LicenseStreamnullLicence sous forme de flux, lu une fois au démarrage. Prend le pas sur les deux autres sources.
boolResetLicensefalseDrapeau de compatibilité réservé. L'implémentation .NET 6 actuelle ne l'utilise pas ; redémarrez l'application après avoir remplacé une licence.
DoconutPluginRegistryPluginRegistry—Registre en lecture seule collectant les contributions de plugins ; consommé par la fabrique de visionneuses. Remplissez‑le via AddPlugin<T>().

Priorité des licences (appliquée lors de l'enregistrement du service) : LicenseStream → LicenseContent → LicensePath → découverte automatique (voir Démarrage → Configuration de licence).

Méthodes

AddPlugin<TPlugin>()

text
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()

Utilisez cette méthode pour les packages Converter et DICOM opt-in publiés. L'annotation et la recherche normale sont des fonctionnalités sous licence intégrées et n'utilisent pas AddPlugin<TPlugin>().

Enregistre un plugin de première partie (Converter, DICOM). Fluent — renvoie l'instance d'options. AddDoconut() lève InvalidOperationException en cas de licence manquante, de fichier legacy TRIAL, ou de licence payante qui ne confère pas la capacité du plugin. Les enregistrements temporaires/Demo sont conservés après expiration et deviennent soumis à la porte d'exécution (voir Concepts de base → Système de plugins).

Le widget Converter opt-in est activé avec AddConverterWidget() et exposé via la propriété en lecture seule ConverterWidget ; ses options sont documentées sur la page du plugin Converter (Plugins → Plugin Converter).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — point initial facultatif
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Enregistre un visionneur personnalisé pour une extension de fichier. Les visionneurs personnalisés ont la priorité sur les visionneurs intégrés et ceux des plugins et ne sont pas soumis à une licence. Lorsque defaultConfig est omis et qu'un document s'ouvre sans configuration explicite, un ImageConfig est utilisé.

Lève ArgumentException (Extension must be a non-empty file extension.) pour une extension vide et ArgumentNullException pour une fabrique nulle.

Validation au démarrage

AddDoconut() valide les options fail-fast, de sorte qu'une mauvaise configuration se manifeste comme une exception claire au démarrage plutôt que des 404 déroutants au moment de la requête :

text
DoconutOptions.MiddlewarePath must be a non-empty path starting with '/'.
DoconutOptions.ResourcesPath must be a non-empty path starting with '/'.
DoconutOptions.MiddlewarePath and ResourcesPath must be different paths.

Configurations courantes

csharp
// Production: licence explicite, tout verrouillé (toutes les valeurs par défaut de sécurité)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Chemins personnalisés (p. ex. pour éviter un conflit de route)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Lorsque vous modifiez ResourcesPath, maintenez le ResPath du widget client synchronisé (voir ViewerConfig).

MiddlewarePath n'est pas un mappeur de routes ASP.NET Core automatique. Si Doconut doit répondre uniquement sous un préfixe personnalisé, montez UseDoconut() sur cette branche (par exemple avec app.Map("/docs-engine", branch => branch.UseDoconut())) et définissez le client BasePath sur la même URL.

Cette page était-elle utile ?