DoconutOptions

Konfigurieren Sie die Doconut-Dienste

DoconutOptions (namespace Doconut) ist das einzige Konfigurationsobjekt für das gesamte SDK. Sie konfigurieren es einmal, im Callback, den Sie an DoconutHost.Initialize in Application_Start übergeben.

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.LicensePath     = HostingEnvironment.MapPath("~/wwwroot/Doconut.Viewer.lic");
    options.UnsafeMode      = false;
    options.ShowDoconutInfo = false;
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

Eigenschaften

TypEigenschaftStandardBeschreibung
boolUnsafeModefalseWenn false, liefert DocImage.axd eine Seite nur an die ASP.NET‑Sitzung, die das Dokument geöffnet hat (oder in einem Farm‑Szenario an den Browser mit einem signierten Ticket). Wenn true, wird jede Anfrage, die das Token enthält, bedient. Lassen Sie es false — siehe Sitzungen & Sicherheit.
boolShowDoconutInfofalseWenn true, beantwortet eine DocImage.axd‑Anfrage ohne Token Doconut <version> is running on <host> anstelle von 404. Nützlich als Schnelltest; lassen Sie false in der Produktion.
stringResourcesPath"/doconut-res"URL-Präfix, unter dem das Ressourcenmodul die eingebetteten Skripte, Styles und Bilder bereitstellt.
stringLicensePath""Vollständiger Pfad zur Lizenzdatei. Leer → die nächste Lizenzquelle, dann automatische Erkennung; nichts gefunden → wasserzeichenbasierte Evaluierung ohne Funktionen.
stringLicenseContent""Roh‑Lizenzinhalt (Datenbank, Umgebungsvariable, Geheimspeicher). Hat Vorrang vor LicensePath.
Stream?LicenseStreamnullLizenz als Stream, einmalig beim Start gelesen. Hat Vorrang vor beiden anderen Quellen.
stringMiddlewarePath"/doconut"Wird von System.Web nicht verwendet. Der Seiten‑Endpunkt ist immer der DocImage.axd‑Handler, der in Web.config deklariert ist. Der Wert wird dennoch beim Start validiert (siehe unten).
boolResetLicensefalseWird nicht verwendet. Die Lizenz wird einmal gelesen, in DoconutHost.Initialize; recyceln Sie den Anwendungspool nach dem Ersetzen einer Lizenz.
DoconutPluginRegistryPluginRegistry—Schreibgeschütztes Register von Plugin‑Beiträgen, gefüllt von AddPlugin<T>().

Lizenz‑Priorität: LicenseStream → LicenseContent → LicensePath → automatische Erkennung (siehe Lizenz‑Einrichtung).

Methoden

AddPlugin<TPlugin>()

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

Registriert ein Plugin (Converter, DICOM). Fluent — gibt die Options‑Instanz zurück. Annotation und Search sind integrierte lizenzierte Funktionen und verwenden es nicht.

Wenn keine aktive Lizenz die Fähigkeit des Plugins gewährt, wirft DoconutHost.Initialize InvalidOperationException aus Application_Start, und die Site beantwortet jede Anfrage mit einem leeren 500, bis das behoben ist; die Meldung befindet sich im Windows‑Ereignisprotokoll (siehe Plugin‑System).

Add…Widget()

text
DoconutOptions AddConverterWidget(Action<ConverterWidgetOptions>? configure = null)

Die Drop‑In‑Widgets sind standardmäßig deaktiviert. Jeder Add…Widget()‑Aufruf schaltet die Endpunkte dieses Widgets in DocImage.axd ein und erfordert, dass das passende Plugin registriert ist. Das Ressourcenmodul stellt das Widget‑Skript bereit, unabhängig davon, ob Sie es aktiviert haben, sodass ein Widget, das lädt und zeichnet, aber bei seiner ersten Aktion 404 beantwortet, diesen Aufruf fehlt. Das Converter‑Widget ist dokumentiert in 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 integrierten 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

DoconutHost.Initialize validiert die Optionen, bevor irgendetwas gebaut wird:

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.

MiddlewarePath wird geprüft, obwohl System.Web es nie verwendet, lassen Sie es also auf dem Standardwert. Wie jede Ausnahme, die von Application_Start geworfen wird, erscheint ein Validierungsfehler als leeres 500 bei jeder Anfrage, mit der Meldung im Windows‑Ereignisprotokoll.

Häufige Konfigurationen

csharp
// Production: explizite Lizenz, alles andere mit seiner sicheren Vorgabe.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Benutzerdefinierter Ressourcenpfad (z. B. um einen Routen-Konflikt zu vermeiden). Behalte den ResPath des Viewers und jedes MVC
// IgnoreRoute in step with it: "/docs-assets" bedeutet ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

Wenn Sie ResourcesPath ändern, ändern Sie drei Dinge zusammen: die Option, das Widget‑ResPath ('docs-assets/images' für "/docs-assets") und, in MVC, das IgnoreRoute für den Ressourcen‑Pfad (routes.IgnoreRoute("docs-assets/{*pathInfo}")). Der DocImage.axd‑Endpunkt verschiebt sich nicht: Sein Pfad wird durch das path‑Attribut des Handlers in Web.config festgelegt.

War diese Seite hilfreich?