DoconutOptions

Konfigurace služeb Doconut

DoconutOptions (namespace Doconut) je jediný konfigurační objekt pro celé SDK. Nakonfigurujete jej jednou, uvnitř AddDoconut(), a je registrován jako singleton.

Jedná se o změnu jak umístění, tak i tvaru. V předchozí knihovně .NET Standard byla DoconutOptions instance vytvořena v čase pipeline a předána UseDoconut(new DoconutOptions { … }). Zde middleware nebere žádné možnosti — vše je nastaveno během registrace služby.

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

Vlastnosti

TypVlastnostVýchozíPopis
boolShowDoconutInfofalseKdyž true, požadavek middleware bez tokenu vrátí banner verze místo 404. Užitečné jako rychlá kontrola; ponechte false v produkci.
boolUnsafeModefalseKdyž true, přeskočí bezpečnostní kontrolu ASP.NET-session u požadavků na stránky. Ponechte false v produkci na jediném uzlu (viz Základní koncepty → Sessions & Security). Dříve psáno UnSafeMode.
stringMiddlewarePath"/doconut"Koordinační hodnota pro endpoint page-image. Je validována, ale nevytváří větev pipeline; udržujte ji v souladu se skutečným mapováním UseDoconut() a klientským BasePath.
stringResourcesPath"/doconut-res"URL cesta prefix pro vložené JS/CSS/image/font zdroje.
stringLicensePath""Cesta k souboru licence. Prázdné → další zdroj licence, pak automatické vyhledání; nic nenalezeno → vodotiskový evaluační stav bez schopností.
stringLicenseContent""Surový XML obsah licence (databáze, env var, secret manager). Má přednost před LicensePath.
Stream?LicenseStreamnullLicence jako stream, načtená jednou při startu. Má přednost před oběma ostatními zdroji.
boolResetLicensefalseRezervovaný kompatibilní příznak. Současná implementace jej nevyužívá; po výměně licence restartujte aplikaci.
DoconutPluginRegistryPluginRegistry—Registr pouze pro čtení sbírající příspěvky pluginů; využívá jej továrna prohlížečů. Naplňte pomocí AddPlugin<T>().

Priorita licencí (vynucená při registraci služby): LicenseStream → LicenseContent → LicensePath → automatické vyhledání (viz Začínáme → Nastavení licence).

Metody

AddPlugin<TPlugin>()

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

Použijte tuto metodu pro vydané volitelné balíčky Converter a DICOM. Anotace a normální vyhledávání jsou vestavěné licencované funkce a nepoužívají AddPlugin<TPlugin>().

Registruje plugin první strany (Converter, DICOM). Fluent — vrací instanci možností. AddDoconut() vyhazuje InvalidOperationException při chybějící licenci, starém souboru TRIAL nebo placené licenci, která neposkytuje schopnost pluginu. Dočasné/Demo registrace jsou zachovány po vypršení a podléhají runtime bráně (viz Základní koncepty → Systém pluginů).

Volitelný widget Converter je povolen pomocí AddConverterWidget() a zpřístupněn přes pouze pro čtení vlastnost ConverterWidget; jeho možnosti jsou zdokumentovány na stránce Converter Plugin (Pluginy → Plugin Converter).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — volitelná úvodní tečka
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registruje vlastní prohlížeč pro příponu souboru. Vlastní prohlížeče mají přednost před vestavěnými a pluginovými prohlížeči a nejsou omezeny licencí. Když je defaultConfig vynecháno a dokument se otevře bez explicitní konfigurace, použije se ImageConfig.

Vyhazuje ArgumentException (Extension must be a non-empty file extension.) pro prázdnou příponu a ArgumentNullException pro null factory.

Validace při spuštění

AddDoconut() validuje možnosti fail-fast, takže špatná konfigurace se projeví jako jasná výjimka při spuštění místo matoucích 404 během požadavku:

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.

Běžné konfigurace

csharp
// Production: explicitní licence, vše uzamčeno (všechny výchozí zabezpečení)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Vlastní cesty (e.g. k vyhnutí se konfliktu směrování)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Když změníte ResourcesPath, udržujte ResPath klientského widgetu v synchronizaci (viz ViewerConfig). Toto je jedno ze dvou nastavení na straně klienta, která selžou bez chybové zprávy.

MiddlewarePath není automatický mapovač tras ASP.NET Core. Pokud má Doconut odpovídat pouze pod vlastním prefixem, připojte UseDoconut() na tuto větev (například pomocí app.Map("/docs-engine", branch => branch.UseDoconut())) a nastavte klientský BasePath na stejnou URL. Referenční aplikace místo toho zachovává historický tvar požadavku DocImage.axd na větvi MapWhen s BasePath: '/'.

Byla tato stránka užitečná?