DoconutOptions

Konfigurera Doconut-tjänsterna

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

Detta är lika mycket en förändring av plats som av form. I det tidigare .NET Standard‑biblioteket konstruerades en DoconutOptions‑instans vid pipeline‑tiden och överlämnades till UseDoconut(new DoconutOptions { … }). Här tar middleware‑komponenten inga alternativ alls — allt sätts under tjänsteregistreringen.

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

Properties

TypEgenskapStandardBeskrivning
boolShowDoconutInfofalseNär true returnerar en middleware‑begäran utan token en versionsbanner istället för 404. Användbart som en snabbkontroll; låt false i produktion.
boolUnsafeModefalseNär true hoppas ASP.NET‑sessionssäkerhetskontrollen över vid sidförfrågningar. Låt false i produktion på en enskild nod (se Core Concepts → Sessions & Security). Tidigare stavat UnSafeMode.
stringMiddlewarePath"/doconut"Koordinationsvärde för slutpunkten för sida‑bild. Det valideras, men monterar ingen pipeline‑gren; håll det i linje med den faktiska UseDoconut()‑mappningen och klientens BasePath.
stringResourcesPath"/doconut-res"URL‑sökvägs‑prefix för de inbäddade JS/CSS/bild/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, hemlig hanterare). Prioriteras framför LicensePath.
Stream?LicenseStreamnullLicens som en ström, läses en gång vid start. Prioriteras framför båda andra källor.
boolResetLicensefalseReserverad kompatibilitetsflagga. Den nuvarande implementationen använder den inte; starta om applikationen efter att ha ersatt en licens.
DoconutPluginRegistryPluginRegistrySkrivskyddad register som samlar plugin‑bidrag; används av visningsfabrik. Fyll på via AddPlugin<T>().

Licensprioritet (tillämpas vid tjänsteregistrering): LicenseStreamLicenseContentLicensePath → automatisk upptäckt (se Getting Started → License Setup).

Methods

AddPlugin()

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

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

Registrerar ett förstapartspaket (Converter, DICOM). Fluent — returnerar options‑instansen. AddDoconut() kastar InvalidOperationException för en saknad licens, äldre TRIAL‑fil eller betald licens som inte ger pluginens funktion. Tillfälliga/Demo‑registreringar behålls efter utgång och blir föremål för körningens grind (se Core Concepts → Plugin System).

Det opt‑in Converter‑widgetet aktiveras med AddConverterWidget() och exponeras via den skrivskyddade ConverterWidget‑egenskapen; dess alternativ dokumenteras på sidan Converter Plugin (Plugins → Converter Plugin).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — leading dot optional
    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 licensbegränsade. 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 ändelse och ArgumentNullException för en null‑factory.

Startup validation

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.

Common configurations

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";
});

När du ändrar ResourcesPath, håll klient‑widgetens ResPath i synk (se ViewerConfig). Detta är en av de två klient‑inställningarna som misslyckas utan felmeddelande.

MiddlewarePath är inte en automatisk ASP.NET Core‑ruttmappare. Om Doconut endast ska svara under ett anpassat prefix, montera UseDoconut() på den grenen (t.ex. med app.Map("/docs-engine", branch => branch.UseDoconut())) och sätt klientens BasePath till samma URL. Referensapplikationen behåller istället den historiska DocImage.axd‑förfrågningsformen på en MapWhen‑gren med BasePath: '/'.

Var den här sidan hjälpsam?