DoconutOptions

Configura i servizi Doconut

DoconutOptions (namespace Doconut) è l'oggetto di configurazione unico per l'intero SDK. Lo configuri una sola volta, all'interno di AddDoconut(), ed è registrato come singleton.

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

Proprietà

TipoProprietàPredefinitoDescrizione
boolShowDoconutInfofalseQuando true, una richiesta middleware senza token restituisce un banner di versione (Doconut <version> is running on <host>) invece di 404. Utile come verifica rapida; lascia false in produzione.
boolUnsafeModefalseQuando true, salta il controllo di sicurezza della sessione ASP.NET nelle richieste di pagina. Lascia false in produzione (vedi Concetti di Base → Sessioni e Sicurezza).
stringMiddlewarePath"/doconut"Valore di coordinamento per l'endpoint pagina-immagine. Viene validato, ma non monta un ramo della pipeline; mantienilo allineato con la mappatura reale di UseDoconut() e il BasePath del client.
stringResourcesPath"/doconut-res"Prefisso del percorso URL per le risorse incorporate JS/CSS/immagine/font.
stringLicensePath""Percorso al file di licenza. Vuoto → fonte di licenza successiva, poi scoperta automatica; se non trovato → stato di valutazione con filigrana e nessuna funzionalità.
stringLicenseContent""Contenuto XML grezzo della licenza (database, variabile d'ambiente, secret manager). Ha precedenza su LicensePath.
Stream?LicenseStreamnullLicenza come stream, letta una volta all'avvio. Ha precedenza su entrambe le altre fonti.
boolResetLicensefalseFlag di compatibilità riservata. L'attuale implementazione .NET 6 non la utilizza; riavvia l'applicazione dopo aver sostituito una licenza.
DoconutPluginRegistryPluginRegistryRegistro di sola lettura che raccoglie i contributi dei plugin; consumato dalla factory del visualizzatore. Popola tramite AddPlugin<T>().

Priorità della licenza (applicata alla registrazione del servizio): LicenseStreamLicenseContentLicensePath → scoperta automatica (vedi Guida introduttiva → Configurazione licenza).

Metodi

AddPlugin<TPlugin>()

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

Usa questo metodo per i pacchetti Converter e DICOM opzionali rilasciati. L'annotazione e la Ricerca normale sono funzionalità con licenza integrate e non utilizzano AddPlugin<TPlugin>().

Registra un plugin di prima parte (Converter, DICOM). Fluent — restituisce l'istanza delle opzioni. AddDoconut() genera InvalidOperationException per licenza mancante, file legacy TRIAL o licenza a pagamento che non concede la funzionalità del plugin. Le registrazioni temporanee/Demo sono mantenute oltre la scadenza e diventano soggette al controllo runtime (vedi Concetti di Base → Sistema dei Plugin).

Il widget Converter opzionale è abilitato con AddConverterWidget() e reso disponibile tramite la proprietà di sola lettura ConverterWidget; le sue opzioni sono documentate nella pagina del Plugin Converter (Plugin → Plugin Converter).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — leading dot optional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registra un visualizzatore personalizzato per un'estensione di file. I visualizzatori personalizzati hanno precedenza su quelli integrati e sui visualizzatori dei plugin e non sono soggetti a licenza. Quando defaultConfig è omesso e un documento si apre senza una configurazione esplicita, viene utilizzato un ImageConfig.

Genera ArgumentException (Extension must be a non-empty file extension.) per un'estensione vuota e ArgumentNullException per una factory nulla.

Validazione all'avvio

AddDoconut() valida le opzioni fail-fast, quindi una cattiva configurazione appare come un'eccezione chiara all'avvio anziché 404 confusi al momento della richiesta:

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.

Configurazioni comuni

csharp
// Production: explicit license, everything locked down (all security defaults)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Custom paths (e.g. to avoid a route conflict)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Quando modifichi ResourcesPath, mantieni sincronizzato il ResPath del widget client (vedi ViewerConfig).

MiddlewarePath non è un mapper di route automatico di ASP.NET Core. Se Doconut deve rispondere solo sotto un prefisso personalizzato, monta UseDoconut() su quel ramo (ad esempio con app.Map("/docs-engine", branch => branch.UseDoconut())) e imposta il BasePath del client allo stesso URL.

Questa pagina è stata utile?