DoconutOptions

Konfigurieren Sie die Doconut-Dienste

DoconutOptions (namespace Doconut) ist das einzige Konfigurationsobjekt für das gesamte SDK. Sie konfigurieren es einmal, innerhalb von AddDoconut(), und es wird als Singleton registriert.

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

Eigenschaften

TypEigenschaftStandardBeschreibung
boolShowDoconutInfofalseWenn true, gibt eine Middleware-Anfrage ohne Token ein Versionsbanner (Doconut <version> is running on <host>) anstelle von 404 zurück. Nützlich als Schnelltest; lassen Sie false in der Produktion.
boolUnsafeModefalseWenn true, wird die ASP.NET-Session-Sicherheitsprüfung bei Seitenanfragen übersprungen. Lassen Sie false in der Produktion (siehe Kernkonzepte → Sitzungen & Sicherheit).
stringMiddlewarePath"/doconut"Koordinationswert für den page-image Endpunkt. Er wird validiert, mountet jedoch keinen Pipeline-Zweig; halten Sie ihn abgestimmt mit der tatsächlichen UseDoconut() Zuordnung und dem Client BasePath.
stringResourcesPath"/doconut-res"URL-Pfad-Präfix für die eingebetteten JS/CSS/Bild/Font-Ressourcen.
stringLicensePath""Pfad zur Lizenzdatei. Leer → nächste Lizenzquelle, dann automatische Erkennung; nichts gefunden → wassergezeichnete Evaluierungsphase ohne Funktionen.
stringLicenseContent""Roh-XML-Lizenzinhalt (Datenbank, Umgebungsvariable, Secret Manager). Hat Vorrang vor LicensePath.
Stream?LicenseStreamnullLizenz als Stream, einmal beim Start gelesen. Hat Vorrang vor beiden anderen Quellen.
boolResetLicensefalseReserviertes Kompatibilitäts-Flag. Die aktuelle .NET 6-Implementierung verwendet es nicht; starten Sie die Anwendung neu, nachdem Sie eine Lizenz ausgetauscht haben.
DoconutPluginRegistryPluginRegistry—Nur-Lese-Registrierung, die Plugin-Beiträge sammelt; wird von der Viewer-Fabrik verwendet. Befüllen Sie sie über AddPlugin<T>().

Lizenzpriorität (bei Service-Registrierung erzwungen): LicenseStream → LicenseContent → LicensePath → automatische Erkennung (siehe Schnellstart → Lizenzsetup).

Methoden

AddPlugin<TPlugin>()

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

Verwenden Sie diese Methode für die veröffentlichten optionalen Converter- und DICOM-Pakete. Annotation und normale Suche sind integrierte lizenzierte Funktionen und verwenden nicht AddPlugin<TPlugin>().

Registriert ein First-Party-Plugin (Converter, DICOM). Fluent — gibt die Options-Instanz zurück. AddDoconut() wirft InvalidOperationException bei fehlender Lizenz, veralteter TRIAL-Datei oder bezahlter Lizenz, die die Plugin-Fähigkeit nicht gewährt. Temporäre/Demo-Registrierungen bleiben über das Ablaufdatum erhalten und unterliegen dem Laufzeit-Gate (siehe Kernkonzepte → Plugin-System).

Das optionale Converter-Widget wird mit AddConverterWidget() aktiviert und über die nur-lesbare Eigenschaft ConverterWidget bereitgestellt; seine Optionen sind auf der Converter-Plugin-Seite dokumentiert (Plugins → Converter Plugin).

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — führender Punkt optional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registriert einen benutzerdefinierten Viewer für eine Dateierweiterung. Benutzerdefinierte Viewer haben Vorrang vor eingebauten und Plugin-Viewern und sind nicht lizenzgebunden. Wenn defaultConfig weggelassen wird und ein Dokument ohne explizite Konfiguration geöffnet wird, wird ein ImageConfig verwendet.

Wirft ArgumentException (Extension must be a non-empty file extension.) bei einer leeren Erweiterung und ArgumentNullException für eine null‑Factory.

Startvalidierung

AddDoconut() validiert die Optionen fail-fast, sodass eine Fehlkonfiguration als klare Ausnahme beim Start erscheint statt verwirrender 404‑Fehler zur Laufzeit:

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.

Häufige Konfigurationen

csharp
// Produktiv: explizite Lizenz, alles gesperrt (alle Sicherheitsstandards)
builder.Services.AddDoconut(options =>
{
    options.LicenseContent = builder.Configuration["Doconut:License"] ?? "";
});

// Benutzerdefinierte Pfade (z. B. um einen Routen‑Konflikt zu vermeiden)
builder.Services.AddDoconut(options =>
{
    options.MiddlewarePath = "/docs-engine";
    options.ResourcesPath  = "/docs-assets";
});

Wenn Sie ResourcesPath ändern, halten Sie das ResPath des Client-Widgets synchron (siehe ViewerConfig).

MiddlewarePath ist kein automatischer ASP.NET Core-Routenmapper. Wenn Doconut nur unter einem benutzerdefinierten Präfix antworten soll, mounten Sie UseDoconut() auf diesem Zweig (zum Beispiel mit app.Map("/docs-engine", branch => branch.UseDoconut())) und setzen Sie das Client-BasePath auf dieselbe URL.

War diese Seite hilfreich?