DoconutAlternativ
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.
Detta är lika mycket en förändring av plats som av form. I det tidigare .NET Standard‑biblioteket en
DoconutOptions‑instans konstruerades vid pipeline‑tiden och överlämnades till
UseDoconut(new DoconutOptions { … }). Här tar middleware inga alternativ alls —
allt sätts under service‑registreringen.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.UnsafeMode = false;
options.ShowDoconutInfo = false;
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});Properties
| Typ | Egenskap | Standard | Beskrivning |
|---|---|---|---|
bool | ShowDoconutInfo | false | När true, returnerar en middleware‑begäran utan en token en versionsbanner istället för 404. Användbar som en snabbkontroll; låt false i produktion. |
bool | UnsafeMode | false | När true, hoppar över ASP.NET‑sessionssäkerhetskontrollen på sidförfrågningar. Lämna false i produktion på en enda nod (se Core Concepts → Sessions & Security). Tidigare stavat UnSafeMode. |
string | MiddlewarePath | "/doconut" | Koordinationsvärde för page‑image‑endpointen. Det valideras, men monterar ingen pipeline‑gren; håll det i linje med den faktiska UseDoconut()‑mappningen och klient‑BasePath. |
string | ResourcesPath | "/doconut-res" | URL‑sökvägs‑prefix för de inbäddade JS/CSS/bild/font‑resurserna. |
string | LicensePath | "" | Sökväg till licensfilen. Tom → nästa licenskälla, sedan automatisk upptäckt; inget hittas → vattenmärkt utvärderingsläge utan funktioner. |
string | LicenseContent | "" | Rå XML‑licensinnehåll (databas, miljövariabel, hemlig hanterare). Har företräde framför LicensePath. |
Stream? | LicenseStream | null | Licens som en ström, läses en gång vid start. Har företräde framför båda andra källor. |
bool | ResetLicense | false | Reserverad kompatibilitetsflagga. Den nuvarande implementationen använder den inte; starta om applikationen efter att ha ersatt en licens. |
DoconutPluginRegistry | PluginRegistry | — | Skrivskyddad register som samlar plugin‑bidrag; konsumeras av visarfabriken. Fyll i via AddPlugin<T>(). |
Licens‑prioritet (tillämpas vid service‑registrering): LicenseStream → LicenseContent → LicensePath → automatisk upptäckt (se Getting Started → License Setup).
Methods
AddPlugin<TPlugin>()
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‑grinden (se Core Concepts → Plugin System).
Den opt‑in‑Converter‑widgeten aktiveras med AddConverterWidget() och exponeras via den skrivskyddade ConverterWidget‑egenskapen; dess alternativ dokumenteras på sidan Converter Plugin (Plugins → Converter Plugin).
RegisterViewer(extension, factory, defaultConfig?)
DoconutOptions RegisterViewer(
string extension, // ".myext" — inledande punkt valfri
Func<IFormatViewer> factory,
Func<BaseConfig>? defaultConfig = null)Registrerar en anpassad visare för en filändelse. Anpassade visare har företräde framför inbyggda och plugin‑visare och är inte licensstyrda. När defaultConfig utelämnas och ett dokument öppnas utan en 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.
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:
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
// Produktion: 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). Detta är en av de två klient‑inställningarna som misslyckas utan felmeddelande.
MiddlewarePath är inte en automatisk ASP.NET Core‑rutt‑mappare. Om Doconut ska svara endast 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. Referensapplikationen behåller istället den historiska DocImage.axd‑begäransformen på en MapWhen‑gren med BasePath: '/'.
Var den här sidan hjälpsam?