Skip to main content

Generación de reportes en AppDomain aislado

Configuración: <trust> vs GenerateReportsInAppDomainSandbox​

Para que los reportes puedan generarse de forma aislada (en un AppDomain separado), dos configuraciones deben trabajar de forma opuesta: si una está en true, la otra debe estar en false. Nunca pueden estar las dos en el mismo valor.

ConfiguraciónUbicaciónValor
<trust legacyCasModel="false" level="Full" />web.configfalse
GenerateReportsInAppDomainSandboxAppSettings.configtrue

Y a la inversa: si se activa el trust, el appsetting debe quedar en false, para que funcione de manera aislada.

¿Por qué?​

  • Es necesario reiniciar el Pull.
  • Es necesario mantener la renderizacion aislada para permitir la ejecucion de Datadog
  • El elemento <trust legacyCasModel="false" level="Full" /> hereda el modelo de seguridad del .NET Framework 3.5 (CAS - Code Access Security). Este modelo choca con la creación de un AppDomain aislado.
  • Por eso, cuando queremos ejecutar el reporte de manera aislada (GenerateReportsInAppDomainSandbox = true), debemos desactivar ese modelo heredado dejando el trust en false.
  • Mantener ambos activos (o ambos inactivos) rompe el aislamiento: uno habilita el comportamiento legacy y el otro el aislado, y no pueden convivir.