Vra

Stelselbeskrywing

'n plotkomponent wat OOXML gebruik om 'n dokument te genereer.

Plotkomponent bestaan ​​uit verskeie dele.Alle dele word in C++ as exe + dll's geskryf, met die uitsondering van die koppelvlak na die OOXML-dokument.Laasgenoemde komponent is 'n COM-komponent wat in C#/.NET geskep is.Die hoofrede hiervoor is dat die .NET-raamwerk bevat Stelsel.IO.Verpakking.Dit is 'n baie handige ingeboude fasiliteit vir die hantering van OOXML-dokumente.

Ons skep 'n dokument uit 'n sjabloon OOXML-dokument waar sekere stukkies en stukke deur hul werklike inhoud vervang word.

Een van hierdie stukkies is 'n OLE Server-komponent.Basies is dit 'n binêre segment binne die OOXML-lêer.Vir die skryf van hierdie binêre segment gebruik die verpakkingskomponent blykbaar geïsoleerde berging.

Probleem

Die skryf van 'n segment > 8MB lei daartoe dat 'n uitsondering gegooi word "Kan nie die identiteit van die domein bepaal nie".

Aan die C++-kant bevat hierdie uitsondering die fout ISS_E_ISOSTORE (0x80131450).

Ons het dit ontleed en sover ons kan sien, is dit 'n sekuriteitskenmerk wat verhoed dat semi-onvertroude derdeparty-komponent jou HD heeltemal verwoes deur enorme lêers te skryf.

Ons het toe al baie dinge in die .NET/COM-komponent probeer (skep persoonlike AppDomains, stel Kenmerke vir maksimum permissiwiteit, Skep ons eie strome en stuur dit na die Packaging-komponent) maar elke keer het dit gelei tot dieselfde uitsondering wat gegooi is.

Wat kan ons doen om dit te laat werk?

Kan dit wees dat wanneer die .NET-komponent as 'n COM-komponent geïnstansieer word, sy AppDomain altyd onbetroubaar is?

Was dit nuttig?

Oplossing

Jy kan dalk self probeer om die pakket uit te zip (in plaas daarvan om die .NET-pakket API te gebruik), skryf direk na die lêer wat die binêre segment verteenwoordig en rits dit weer.

Ander wenke

Jy moet die titel van daardie vraag verander aangesien jou probleem nie OOXML-verwant is nie.

Anders as dit:met watter stelsel werk jy dat 8MB stukke data die risiko tot gevolg het dat jy jou hardeskyf totaal optel?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top