Domino对象COMException:'内存不足'

时间:2018-12-18 00:19:56

标签: c# com lotus-notes lotus-domino lotus

当我对具有很大附件的NotesDXLExporterClass.Export对象调用NotesDocumentClass时,会遇到System.Runtime.InteropServices.COMException: 'Out of memory'异常。

我希望通过将NotesDXLExporter.OmitRichtextAttachments设置为true来解决此问题,但是看来该属性无法通过COM(1)使用。

在这里,我可以采取哪些解决方案?

(1)Differences between accessing Domino Objects through either LotusScript or COM

注释4: NotesXMLProcessor未在COM中实现。 NotesDXLExporterNotesDXLImporter实现ExitOnFirstFatalErrorLogLogComment,而不是继承它们。 )

编辑:

当我在C:\Program Files (x86)\IBM\Lotus\Notes\domobj.tlb中打开Oleview.exe并查看NotesDXLExporterClass界面时,只会看到以下内容:

[
  uuid(29131437-2EED-1069-BF5D-00DD011186B7)
]
dispinterface NOTESDXLEXPORTER {
    properties:
        [id(0x00000bf6)        
]
        VARIANT FORCENOTEFORMAT;
        [id(0x00000bfa)        
]
        VARIANT OUTPUTDOCTYPE;
        [id(0x00000bfb)        
]
        BSTR DOCTYPESYSTEM;
        [id(0x00000f1e), readonly        
]
        BSTR LOG;
        [id(0x00000f1f)        
]
        BSTR LOGCOMMENT;
        [id(0x00000f20)        
]
        VARIANT EXITONFIRSTFATALERROR;
    methods:
        [id(0x00000f28)]
        void SETINPUT(VARIANT INPUT);
        [id(0x00000f29)]
        void SETOUTPUT(VARIANT OUTPUT);
        [id(0x00000f2a)]
        void PROCESS();
};

2 个答案:

答案 0 :(得分:0)

您链接到的文档(以及我的本地Notes帮助)并没有说明NotesDXLExporter.OmitRichtextAttachments在COM中不可用。您是否尝试过使用该属性并收到错误消息?

如果NotesDXLExporter.OmitRichtextAttachments不可用,您是否可以在相关的Domino数据库(或为此目的而创建的另一个数据库)中开发代理程序?

我认为代理商可以通过NotesAgent.Run获取目标文档的注释ID,并将该文档的DXL导出到字段(如果DXL大于32kB,则可能必须为富文本)。另一个临时文件。您的代码应通过COM调用该代理,获取生成的临时文档,从其字段中读取DXL,然后删除该临时文档。
这似乎过于复杂,但这是我想到的唯一解决方案。

答案 1 :(得分:0)

尝试将代码作为LotusScript代理运行。

如果失败,则问题是类固有的问题,而不是COM实现中的问题,除了尝试更新Notes / Domino的最新版本外,您将无能为力。

如果有效,则可能的解决方法是让您的COM代码调用服务器上的LotusScript代理来完成这部分工作。