Question

Description du système

Un composant de traçage qui utilise OOXML pour générer un document.

Le composant de traçage est constitué de plusieurs parties. Toutes les parties sont écrites en C ++ sous la forme de fichiers exe + dll, à l'exception de l'interface avec le document OOXML. Ce dernier composant est un composant COM créé en C # / .NET. La raison principale en est que le framework .NET contient System.IO.Packaging . Il s’agit d’une fonctionnalité intégrée très pratique pour traiter les documents OOXML.

Nous créons un document à partir d'un modèle de document OOXML dans lequel certains éléments sont remplacés par leur contenu réel.

L'un de ces bits est un composant du serveur OLE. En gros, il s’agit d’un segment binaire du fichier OOXML. Pour écrire ce segment binaire, le composant Packaging utilise apparemment un stockage isolé.

Problème

Écriture d'un segment > 8 Mo aboutit à la création d’une exception "Impossible de déterminer l’identité du domaine".

Du côté C ++, cette exception contient l'erreur ISS_E_ISOSTORE (0x80131450).

Nous avons analysé cela et, autant que nous puissions en juger, il s'agit d'une fonctionnalité de sécurité qui empêche les composants tiers peu fiables de ruiner complètement votre disque dur en écrivant d'immenses fichiers.

Nous avons ensuite essayé beaucoup de choses dans le composant .NET / COM (créer des domaines d'application personnalisés, définir des attributs pour une permissivité maximale, créer nos propres flux et les transmettre au composant Packaging), mais à chaque fois, la même exception était générée. être jeté.

Que pourrions-nous faire pour que cela fonctionne?

Est-il possible que, lorsque le composant .NET est instancié en tant que composant COM, son domaine d'application soit toujours non approuvé?

Était-ce utile?

La solution

Vous pouvez essayer de décompresser le package vous-même (au lieu d'utiliser l'API du package .NET), d'écrire directement dans le fichier qui représente le segment binaire et de le décompresser à nouveau.

Autres conseils

Vous devriez changer le titre de cette question car votre problème n'est pas lié à OOXML.

Autre que cela: sur quel système travaillez-vous sur ces 8 Mo de données, vous risquez de cumuler votre disque dur?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top