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 convalidato, 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 senza 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 8 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. Popolalo tramite AddPlugin<T>().

Priorità della licenza (applicata durante la 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 una licenza mancante, file legacy TRIAL o licenza a pagamento che non concede la capacità del plugin. Le registrazioni temporanee/Demo sono mantenute oltre la scadenza e diventano soggette al filtro di 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 vincolati da licenza. Quando defaultConfig è omesso e un documento si apre senza una configurazione esplicita, viene usato 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 invece di 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 alla stessa URL.

Questa pagina è stata utile?