Pregunta

Descripción del sistema

Un componente de trazado que utiliza OOXML para generar un documento.

El componente de trazado consta de varias partes. Todas las partes están escritas en C ++ como exe + dll, con la excepción de la interfaz al documento OOXML. El último componente es un componente COM que se creó en C # / .NET. La razón principal de esto es que .NET Framework contiene System.IO.Packaging . Esta es una facilidad incorporada muy útil para tratar con documentos OOXML.

Creamos un documento a partir de un documento OOXML de plantilla donde ciertos bits y piezas son reemplazados por su contenido real.

Uno de estos bits es un componente del servidor OLE. Básicamente este es un segmento binario dentro del archivo OOXML. Para escribir este segmento binario, el componente de Empaquetado aparentemente usa almacenamiento aislado.

Problema

Escribiendo un segmento > 8MB da como resultado que se lanza una excepción " No se puede determinar la identidad del dominio " ;.

En el lado de C ++, esta excepción contiene el error ISS_E_ISOSTORE (0x80131450).

Hemos analizado esto y, por lo que podemos decir, esta es una característica de seguridad que evita que los componentes de terceros que no son de confianza arruinen completamente tu HD al escribir inmensos archivos.

Luego, hemos intentado muchas cosas en el componente .NET / COM (creando dominios de aplicación personalizados, estableciendo atributos para la máxima permisividad, creando nuestras propias transmisiones y pasándolas al componente de empaquetado), pero cada vez resultó en la misma excepción. ser arrojado.

¿Qué podríamos hacer para que esto funcione?

¿Podría ser que cuando se crea una instancia del componente .NET como un componente COM, su dominio de aplicación no es confiable?

¿Fue útil?

Solución

Puede intentar descomprimir el paquete usted mismo (en lugar de usar la API del paquete .NET), escriba directamente en el archivo que representa el segmento binario y vuelva a comprimirlo.

Otros consejos

Debe cambiar el título de esa pregunta ya que su problema no está relacionado con OOXML.

Aparte de eso: ¿en qué sistema estás trabajando con esos 8MB de trozos de datos que corren el riesgo de que se acumule en tu disco duro?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top