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.
Il s'agit d'un changement d'emplacement autant que de forme. Dans la bibliothèque .NET Standard précédente, une instance de DoconutOptions était construite au moment du pipeline et transmise à UseDoconut(new DoconutOptions { … }). Ici, le middleware ne prend aucune option — tout est défini lors de l'enregistrement du service.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Propriétés
| Type | Propriété | Valeur par défaut | Description |
|---|---|---|---|
bool | ShowDoconutInfo | false | Lorsque true, une requête middleware sans jeton renvoie une bannière de version au lieu de 404. Utile comme vérification rapide ; laissez false en production. |
bool | UnsafeMode | false | Lorsque true, ignore la vérification de sécurité de session ASP.NET sur les requêtes de page. Laissez false en production sur un nœud unique (voir Concepts de base → Sessions & Sécurité). Orthographe précédente UnSafeMode. |
string | MiddlewarePath | "/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 de UseDoconut() et le BasePath du client. |
string | ResourcesPath | "/doconut-res" | Préfixe de chemin d'URL pour les ressources JS/CSS/image/font intégrées. |
string | LicensePath | "" | Chemin vers le fichier de licence. Vide → source de licence suivante, puis découverte automatique ; rien trouvé → état d'évaluation filigrané sans capacités. |
string | LicenseContent | "" | Contenu XML brut de la licence (base de données, variable d'environnement, gestionnaire de secrets). Prend le pas sur LicensePath. |
Stream? | LicenseStream | null | Licence sous forme de flux, lu une fois au démarrage. Prend le pas sur les deux autres sources. |
bool | ResetLicense | false | Drapeau de compatibilité réservé. L'implémentation actuelle ne l'utilise pas ; redémarrez l'application après avoir remplacé une licence. |
DoconutPluginRegistry | PluginRegistry | — | Registre en lecture seule collectant les contributions des plugins ; utilisé par la fabrique de visionneuse. 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 la licence).
Méthodes
AddPlugin()
DoconutOptions AddPlugin<TPlugin>() where TPlugin : IDoconutPlugin, new()Utilisez cette méthode pour les packages Converter et DICOM optionnels 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 des options. AddDoconut() lève InvalidOperationException en cas de licence manquante, de fichier TRIAL hérité, 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 optionnel 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?)
DoconutOptions RegisterViewer(
string extension, // ".myext" — leading dot optional
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 du démarrage
AddDoconut() valide les options fail‑fast, de sorte qu'une mauvaise configuration se manifeste sous forme d'exception claire au démarrage plutôt que des 404 déroutants au moment de la requête :
DoconutOptions.MiddlewarePath doit être un chemin non vide commençant par '/'.
DoconutOptions.ResourcesPath doit être un chemin non vide commençant par '/'.
DoconutOptions.MiddlewarePath et ResourcesPath doivent être des chemins différents.Configurations courantes
// Production : licence explicite, tout verrouillé (toutes les sécurités par défaut)
builder.Services.AddDoconut(options =>
{
options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});
// Chemins personnalisés (par 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). C'est l'un des deux paramètres côté client qui échouent sans message d'erreur.
MiddlewarePath n'est pas un mappage de route 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 BasePath du client sur la même URL. L'application de référence conserve quant à elle la forme historique de la requête DocImage.axd sur une branche MapWhen avec BasePath: '/'.
Cette page était-elle utile ?