DoconutOptions

Configura los servicios Doconut

DoconutOptions (namespace Doconut) es el único objeto de configuración para todo el SDK. Lo configuras una vez, dentro de AddDoconut(), y se registra como un singleton.

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

Propiedades

TipoPropiedadPredeterminadoDescripción
boolShowDoconutInfofalseCuando true, una solicitud de middleware sin token devuelve una pancarta de versión (Doconut <version> is running on <host>) en lugar de 404. Útil como verificación rápida; deja false en producción.
boolUnsafeModefalseCuando true, omite la verificación de seguridad de la sesión ASP.NET en las solicitudes de página. Deja false en producción (ver Conceptos básicos → Sesiones y seguridad).
stringMiddlewarePath"/doconut"Valor de coordinación para el punto final de página-imagen. Se valida, pero no monta una rama del pipeline; mantenlo alineado con el mapeo real de UseDoconut() y el BasePath del cliente.
stringResourcesPath"/doconut-res"Prefijo de ruta URL para los recursos incrustados de JS/CSS/imagen/fuente.
stringLicensePath""Ruta al archivo de licencia. Vacío → siguiente fuente de licencia, luego descubrimiento automático; si no se encuentra nada → estado de evaluación con marca de agua y sin capacidades.
stringLicenseContent""Contenido XML de licencia sin procesar (base de datos, variable de entorno, gestor de secretos). Tiene precedencia sobre LicensePath.
Stream?LicenseStreamnullLicencia como flujo, leída una vez al iniciar. Tiene precedencia sobre ambas fuentes restantes.
boolResetLicensefalseBandera de compatibilidad reservada. La implementación actual de .NET 8 no la utiliza; reinicia la aplicación después de reemplazar una licencia.
DoconutPluginRegistryPluginRegistryRegistro de solo lectura que recopila contribuciones de plugins; es consumido por la fábrica de visores. Poblado mediante AddPlugin<T>().

Precedencia de licencia (aplicada al registrar el servicio): LicenseStreamLicenseContentLicensePath → descubrimiento automático (ver Introducción → Configuración de licencia).

Métodos

AddPlugin()()

Utiliza este método para los paquetes Converter y DICOM opcionales publicados. La anotación y la búsqueda normal son funciones con licencia incorporadas y no usan AddPlugin<TPlugin>().

Registra un plugin de primera parte (Converter, DICOM). Fluent — devuelve la instancia de opciones. AddDoconut() lanza InvalidOperationException si falta una licencia, si hay un archivo TRIAL heredado, o una licencia paga que no otorga la capacidad del plugin. Los registros temporales/Demo se conservan después de la expiración y quedan sujetos a la puerta de tiempo de ejecución (ver Conceptos básicos → Sistema de plugins).

El widget Converter opcional se habilita con AddConverterWidget() y se expone a través de la propiedad de solo lectura ConverterWidget; sus opciones están documentadas en la página del plugin Converter (Plugins → Plugin Converter).

RegisterViewer(extension, factory, defaultConfig?)

Registra un visor personalizado para una extensión de archivo. Los visores personalizados tienen precedencia sobre los visores incorporados y de plugins y no están sujetos a licencia. Cuando defaultConfig se omite y un documento se abre sin una configuración explícita, se utiliza un ImageConfig.

Lanza ArgumentException (Extension must be a non-empty file extension.) para una extensión vacía y ArgumentNullException para una fábrica nula.

Validación de inicio

AddDoconut() valida las opciones fail-fast, de modo que una mala configuración se muestra como una excepción clara al iniciar en lugar de 404 confusos en tiempo de solicitud:

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.

Configuraciones comunes

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

Cuando cambies ResourcesPath, mantén sincronizado el ResPath del widget cliente (ver ViewerConfig).

MiddlewarePath no es un mapeador automático de rutas de ASP.NET Core. Si Doconut debe responder solo bajo un prefijo personalizado, monta UseDoconut() en esa rama (por ejemplo con app.Map("/docs-engine", branch => branch.UseDoconut())) y establece el BasePath del cliente a la misma URL.

¿Fue útil esta página?