Descripción del sistemaProblema usando gran segmento binario en OOXML
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 del documento OOXML. El último componente es un componente COM que se creó en C# /. NET. La razón principal de esto es que el .NET Framework contiene System.IO.Packaging. Esta es una práctica función muy útil para tratar con documentos OOXML.
Creamos un documento a partir de una plantilla de documento OOXML donde ciertos bits y piezas se reemplazan 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 empaque aparentemente usa almacenamiento aislado.
Problema
Escribir un segmento> Resultados de 8 MB en una excepción ser arrojado "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 impide que un componente de terceros que no son de confianza arruine completamente su HD al escribir archivos inmensos.
Hemos intentado muchas cosas en el componente .NET/COM (creando AppDomains personalizados, estableciendo atributos para la máxima permisividad, creando nuestros propios flujos y pasándolos al componente de embalaje) pero cada vez resultó en el mismo excepción lanzada.
¿Qué podríamos hacer para que esto funcione?
¿Podría ser que cuando el componente .NET se instancia como un componente COM, su AppDomain siempre no es de confianza?
No está directamente relacionado con OOXML, pero nos impide escribir el OOXML que queremos, por lo que está relacionado. Nunca dije que mi sistema fuera totalizado por un archivo de 8MB, la característica de seguridad de tiempo de ejecución .NET para almacenamiento aislado parece pensar que es un buen límite superior. – QBziZ