Domanda

Descrizione del sistema

Un componente di stampa che utilizza OOXML per generare un documento.

Il componente di stampa è composto da più parti. Tutte le parti sono scritte in C ++ come exe + dll, ad eccezione dell'interfaccia del documento OOXML. Quest'ultimo componente è un componente COM creato in C # /. NET. Il motivo principale di ciò è che il framework .NET contiene System.IO.Packaging . Questa è una funzione integrata molto utile per gestire i documenti OOXML.

Creiamo un documento da un documento OOXML modello in cui alcuni pezzi vengono sostituiti dal loro contenuto effettivo.

Uno di questi bit è un componente Server OLE. Fondamentalmente questo è un segmento binario all'interno del file OOXML. Per scrivere questo segmento binario, il componente Packaging utilizza apparentemente una memoria isolata.

problema

Scrivere un segmento > 8 MB comportano il lancio di un'eccezione "Impossibile determinare l'identità del dominio".

Sul lato C ++ questa eccezione contiene l'errore ISS_E_ISOSTORE (0x80131450).

Abbiamo analizzato questo e, per quanto ne sappiamo, questa è una funzione di sicurezza che impedisce a componenti di terze parti non attendibili di rovinare completamente il tuo HD scrivendo file immensi.

Abbiamo quindi provato molte cose nel componente .NET / COM (creazione di AppDomain personalizzati, impostazione degli Attributi per la massima permissività, creazione dei nostri stream e passaggio di questi al componente Packaging) ma ogni volta ha provocato la stessa eccezione essere lanciato.

Cosa potremmo fare per far funzionare questo?

Potrebbe essere che quando il componente .NET viene istanziato come componente COM, il suo AppDomain è sempre non attendibile?

È stato utile?

Soluzione

Potresti provare a decomprimere il pacchetto da solo (invece di utilizzare l'API del pacchetto .NET), scrivere direttamente nel file che rappresenta il segmento binario e comprimerlo nuovamente.

Altri suggerimenti

Dovresti cambiare il titolo di quella domanda poiché il tuo problema non è correlato a OOXML.

A parte questo: quale sistema stai lavorando su quei blocchi di dati da 8 MB comportano il rischio di totalizzare il tuo disco rigido?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top