系统说明

使用OOXML生成文档的绘图组件。

绘图组件由几个部分组成。 除了OOXML文档的接口之外,所有部分都用C ++编写为exe + dll。 后一个组件是在C#/ .NET中创建的COM组件。主要原因是.NET框架包含 System.IO.Packaging 。这是一个非常方便的内置工具,用于处理OOXML文档。

我们使用模板OOXML文档创建文档,其中某些零碎的部分将被实际内容替换。

其中一个位是OLE服务器组件。基本上这是OOXML文件中的二进制段。为了编写这个二进制段,Packaging组件显然使用了独立存储。

<强>问题

撰写细分&gt; 8MB导致抛出异常“无法确定域的身份”。

在C ++端,此异常包含错误ISS_E_ISOSTORE(0x80131450)。

我们已对此进行了分析,据我们所知,这是一项安全功能,可防止半不受信任的第三方组件通过编写大量文件来完全破坏您的HD。

然后我们在.NET / COM组件中尝试了很多东西(创建自定义AppDomain,设置属性以获得最大允许性,创建我们自己的Streams并将它们传递给Packaging组件)但每次都会导致相同的异常被抛出。

我们可以做些什么来完成这项工作?

当.NET组件被实例化为COM组件时,它的AppDomain总是不受信任吗?

有帮助吗?

解决方案

您可能尝试自己解压缩包(而不是使用.NET包API),直接写入代表二进制段的文件并再次压缩它。

其他提示

您应该更改该问题的标题,因为您的问题与OOXML无关。

除此之外:您正在使用哪种系统处理8MB数据块会导致硬盘总数增加的风险?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top