DoconutOptions

Configura los servicios Doconut

DoconutOptions (namespace Doconut) es el único objeto de configuración para todo el SDK. Lo configuras una vez, en el callback que pasas a DoconutHost.Initialize en Application_Start.

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

Propiedades

TipoPropiedadValor predeterminadoDescripción
boolUnsafeModefalseCuando false, DocImage.axd sirve una página solo a la sesión ASP.NET que abrió el documento (o, en una granja, al navegador con un ticket firmado). Cuando true, cualquier solicitud que lleve el token es atendida. Déjalo false — vea Sesiones y Seguridad.
boolShowDoconutInfofalseCuando true, una solicitud DocImage.axd sin token responde Doconut <version> is running on <host> en lugar de 404. Útil como una verificación rápida; deje false en producción.
stringResourcesPath"/doconut-res"Prefijo de URL bajo el cual el módulo de recursos sirve los scripts, estilos e imágenes incrustados.
stringLicensePath""Ruta completa al archivo de licencia. Vacío → la siguiente fuente de licencia, luego descubrimiento automático; si no se encuentra nada → evaluación con marca de agua sin capacidades.
stringLicenseContent""Contenido bruto de la licencia (base de datos, variable de entorno, almacén secreto). Tiene precedencia sobre LicensePath.
Stream?LicenseStreamnullLicencia como flujo, leída una vez al iniciar. Tiene precedencia sobre ambas fuentes restantes.
stringMiddlewarePath"/doconut"No usado por System.Web. El endpoint de la página es siempre el controlador DocImage.axd declarado en Web.config. El valor sigue siendo validado al iniciar (ver más abajo).
boolResetLicensefalseNo usado. La licencia se lee una vez, en DoconutHost.Initialize; recicle el pool de aplicaciones después de reemplazar una licencia.
DoconutPluginRegistryPluginRegistry—Registro de solo lectura de contribuciones de plugins, completado por AddPlugin<T>().

Precedencia de licencia: LicenseStream → LicenseContent → LicensePath → descubrimiento automático (ver Configuración de Licencia).

Métodos

AddPlugin<TPlugin>()

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

Registra un plugin (Convertidor, DICOM). Fluent — devuelve la instancia de opciones. Anotación y Búsqueda son funciones con licencia integradas y no lo utilizan.

Si ninguna licencia activa otorga la capacidad del plugin, DoconutHost.Initialize lanza InvalidOperationException desde Application_Start, y el sitio responde a cada solicitud con un 500 vacío hasta que se solucione; el mensaje está en el registro de eventos de Windows (ver Sistema de Plugins).

Add…Widget()

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

Los widgets integrados están desactivados por defecto. Cada llamada Add…Widget() activa los endpoints de ese widget en DocImage.axd, y requiere que el plugin correspondiente esté registrado. El módulo de recursos sirve el script del widget haya o no sido habilitado, por lo que un widget que se carga y pinta pero responde 404 en su primera acción carece de esta llamada. El widget Convertidor está documentado en Plugin Convertidor.

RegisterViewer(extension, factory, defaultConfig?)

text
DoconutOptions RegisterViewer(
    string extension,                    // ".myext" — punto inicial opcional
    Func<IFormatViewer> factory,
    Func<BaseConfig>? defaultConfig = null)

Registra un visor personalizado para una extensión de archivo. Los visores personalizados tienen precedencia sobre los visores integrados 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 usa 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

DoconutHost.Initialize valida las opciones antes de construir cualquier cosa:

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 se verifica aunque System.Web nunca lo use, así que déjalo en su valor predeterminado. Como cualquier excepción lanzada desde Application_Start, una falla de validación aparece como un 500 vacío en cada solicitud, con el mensaje en el registro de eventos de Windows.

Configuraciones comunes

csharp
// Producción: licencia explícita, todo lo demás en su valor predeterminado seguro.
public static void ProductionLicense() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
    });

// Ruta de recurso personalizada (p. ej. para evitar un conflicto de ruta). Mantenga el ResPath del visor y cualquier MVC
// IgnoreRoute en sincronía con él: "/docs-assets" significa ResPath: 'docs-assets/images'.
public static void CustomResourcePath() =>
    Doconut.DoconutHost.Initialize(options =>
    {
        options.ResourcesPath = "/docs-assets";
    });

Cuando cambies ResourcesPath, cambia tres cosas a la vez: la opción, el ResPath del widget ('docs-assets/images' para "/docs-assets"), y, en MVC, el IgnoreRoute para la ruta del recurso (routes.IgnoreRoute("docs-assets/{*pathInfo}")). El endpoint DocImage.axd no se mueve: su ruta la establece el atributo path del controlador en Web.config.

¿Fue útil esta página?