Instalación
Agregar Doconut a tu proyecto .NET 8
El visor base Doconut para .NET 8 se entrega como un paquete NuGet que se integra en cualquier aplicación ASP.NET Core. Los complementos opcionales usan paquetes separados. Esta página instala el paquete base y registra el middleware — lo mínimo necesario antes de tu primera renderización.
Instalar el paquete
dotnet add package Doconut.NET8El comando sin versión instala la última versión estable. Para reproducir exactamente la versión actual 26.7.0, pasa la versión como una opción separada:
dotnet add package Doconut.NET8 --version 26.7.0Doconut.NET8 es el ID del paquete. El sufijo .26.7.0 pertenece al nombre de archivo descargado
Doconut.NET8.26.7.0.nupkg y no forma parte del ID.
Registrar Doconut
AddDoconut() es el único punto de entrada de registro — hay una única sobrecarga, y conecta el servicio Viewer, el servicio de licencia y la infraestructura de renderizado al contenedor DI.
Dos llamadas al middleware completan la configuración, y su orden importa: UseDoconutResources() debe ejecutarse antes de UseDoconut(). UseDoconut() es middleware terminal, por lo que llamarlo primero hace que cualquier solicitud a un recurso /doconut-res nunca llegue al manejador de recursos y devuelva 404. El cableado de sesión también es necesario — la seguridad de documentos predeterminada de Doconut valida cada solicitud de página contra el estado de sesión de ASP.NET.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // el estado de sesión necesita una caché (MVC/Razor Pages ya añaden una)
builder.Services.AddSession(); // la seguridad de documentos de Doconut se basa en el estado de sesión de ASP.NET
app.UseSession(); // llama a UseSession() antes de UseDoconut()
app.UseDoconutResources(); // debe registrarse antes de UseDoconut()
app.UseDoconut();Todas las opciones
DoconutOptions acepta las siguientes propiedades configurables. Cada una es opcional — los valores predeterminados a continuación se aplican cuando una propiedad queda sin establecer.
| Propiedad | Valor predeterminado | Descripción |
|---|---|---|
ShowDoconutInfo | false | Cuando true, una solicitud sin token devuelve una pancarta de versión en lugar de un 404. Útil como verificación rápida; desactívalo en producción. |
UnsafeMode | false | Cuando true, omite la verificación de seguridad basada en la sesión de ASP.NET en las solicitudes de página. Desactívalo en producción. |
MiddlewarePath | "/doconut" | Valor de coordinación para el endpoint de página‑imagen. Se valida, pero no monta una rama por sí mismo; mantenlo alineado con el mapeo real de UseDoconut() y el BasePath del cliente. |
ResourcesPath | "/doconut-res" | Desde donde se sirven los recursos JS/CSS/imagen incrustados. |
LicensePath | "" (cadena vacía) | Ruta al archivo de licencia. Vacío significa pasar al siguiente origen, luego búsqueda automática. |
LicenseContent | "" (cadena vacía) | Contenido bruto de la licencia — desde una variable de entorno, un gestor de secretos o una base de datos. |
LicenseStream | null | Licencia como flujo, leída una vez al iniciar. |
ResetLicense | false | Bandera de compatibilidad reservada. Los servicios actuales de .NET 8 leen la licencia durante AddDoconut(); reinicia la aplicación después de reemplazar una licencia. |
Prioridad de licencia cuando se establecen más de una fuente: LicenseStream supera a LicenseContent, que supera a LicensePath, que supera a la búsqueda automática — ver Configuración de licencia.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
options.MiddlewarePath = "/doconut"; // coordina con el mapeo de la aplicación y el BasePath del cliente
options.ResourcesPath = "/doconut-res"; // donde se sirven los JS/CSS/imágenes del visor
options.UnsafeMode = false; // mantiene la seguridad de sesión activada
options.ShowDoconutInfo = false;
});Próximos pasos
- Inicio rápido — abre tu primer documento y rásterízalo en el navegador.
- Configuración de licencia — dónde Doconut busca tu archivo de licencia.
¿Fue útil esta página?