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.
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
| Tipo | Propiedad | Valor predeterminado | Descripción |
|---|---|---|---|
bool | UnsafeMode | false | Cuando 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. |
bool | ShowDoconutInfo | false | Cuando 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. |
string | ResourcesPath | "/doconut-res" | Prefijo de URL bajo el cual el módulo de recursos sirve los scripts, estilos e imágenes incrustados. |
string | LicensePath | "" | 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. |
string | LicenseContent | "" | Contenido bruto de la licencia (base de datos, variable de entorno, almacén secreto). Tiene precedencia sobre LicensePath. |
Stream? | LicenseStream | null | Licencia como flujo, leída una vez al iniciar. Tiene precedencia sobre ambas fuentes restantes. |
string | MiddlewarePath | "/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). |
bool | ResetLicense | false | No usado. La licencia se lee una vez, en DoconutHost.Initialize; recicle el pool de aplicaciones después de reemplazar una licencia. |
DoconutPluginRegistry | PluginRegistry | — | 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>()
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()
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?)
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:
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
// 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?