DoconutOptions

Konfigurera Doconut-tjänsterna

DoconutOptions (namespace Doconut) är det enda konfigurationsobjektet för hela SDK:n. Du konfigurerar det en gång, inuti AddDoconut(), och det registreras som en singleton.

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

Egenskaper

TypEgenskapStandardBeskrivning
boolShowDoconutInfofalseNär true, returnerar en middleware-förfrågan utan token en versionsbanner (Doconut <version> is running on <host>) istället för 404. Användbar som en snabbkontroll; lämna false i produktion.
boolUnsafeModefalseNär true, hoppar över ASP.NET-sessionens säkerhetskontroll på sidförfrågningar. Lämna false i produktion (se Core Concepts → Sessions & Security).
stringMiddlewarePath"/doconut"Koordinationsvärde för page-image‑endpointen. Det valideras, men monterar inte en pipeline‑gren; håll det i linje med den faktiska UseDoconut()‑mappningen och klientens BasePath.
stringResourcesPath"/doconut-res"URL‑sökvägsprefix för de inbäddade JS/CSS/image/font‑resurserna.
stringLicensePath""Sökväg till licensfilen. Tom → nästa licenskälla, sedan automatisk upptäckt; inget hittas → vattenmärkt utvärderingsläge utan funktioner.
stringLicenseContent""Rå XML‑licensinnehåll (databas, miljövariabel, secret manager). Har företräde framför LicensePath.
Stream?LicenseStreamnullLicens som en ström, läses en gång vid start. Har företräde framför båda andra källor.
boolResetLicensefalseReserverad kompatibilitetsflagga. Den nuvarande .NET 6‑implementationen använder den inte; starta om applikationen efter att ha ersatt en licens.
DoconutPluginRegistryPluginRegistry—Skrivskyddad register som samlar plugin‑bidrag; konsumeras av viewer‑fabriken. Fyll i via AddPlugin<T>().

Licensprioritet (tillämpas vid service‑registrering): LicenseStream → LicenseContent → LicensePath → automatisk upptäckt (se Getting Started → License Setup).

Metoder

AddPlugin<TPlugin>()

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

Använd den här metoden för de släppta opt‑in‑Converter‑ och DICOM‑paketen. Annotation och normal Search är inbyggda licensierade funktioner och använder inte AddPlugin<TPlugin>().

Registrerar ett förstapart-plugin (Converter, DICOM). Fluent — returnerar options‑instansen. AddDoconut() kastar InvalidOperationException för en saknad licens, legacy‑TRIAL‑fil, eller betald licens som inte ger plugin‑funktionaliteten. Tillfälliga/Demo‑registreringar behålls efter utgång och blir föremål för runtime‑gate (se Core Concepts → Plugin System).

Den opt‑in Converter‑widgeten aktiveras med AddConverterWidget() och exponeras via den skrivskyddade ConverterWidget‑egenskapen; dess alternativ är dokumenterade på sidan Converter Plugin (Plugins → Converter Plugin).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — inledande punkt valfri
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registrerar en custom viewer för en filändelse. Custom viewers har företräde framför inbyggda och plugin‑viewers och är inte licensstyrda. När defaultConfig utelämnas och ett dokument öppnas utan explicit konfiguration, används en ImageConfig.

Kastar ArgumentException (Extension must be a non-empty file extension.) för en tom filändelse och ArgumentNullException för en null‑factory.

Startvalidering

AddDoconut() validerar alternativen fail‑fast, så en felkonfiguration visas som ett tydligt undantag vid start istället för förvirrande 404‑fel vid begäran:

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.

Vanliga konfigurationer

csharp
// Production: explicit licens, allt låst (alla säkerhetsstandarder)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Anpassade sökvägar (t.ex. för att undvika en ruttkonflikt)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

När du ändrar ResourcesPath, håll klient‑widgetens ResPath i synk (se ViewerConfig).

MiddlewarePath är inte en automatisk ASP.NET Core‑routemapper. Om Doconut endast ska svara under ett anpassat prefix, montera UseDoconut() på den grenen (till exempel med app.Map("/docs-engine", branch => branch.UseDoconut())) och sätt klient‑BasePath till samma URL.

Var den här sidan hjälpsam?