【发布时间】:2011-01-26 02:19:11
【问题描述】:
我认为我有一个使用 Microsoft Office Document Imaging 对象模型将 .mdi 文件转换为 PDF 的有效解决方案。解决方案是在 Windows 服务中,但现在我遇到了一些错误,我无法跟踪信息。
我得到的例外是:
服务器抛出异常。 (来自 HRESULT 的异常:0x80010105 (RPC_E_SERVERFAULT)) System.Runtime.InteropServices.COMException (0x80010105): 服务器抛出一个 例外。 (HRESULT 的例外情况: 0x80010105 (RPC_E_SERVERFAULT))
在 MODI.DocumentClass.Create(字符串文件打开) 在 DocumentStore.Mdi2PDF(字符串路径,字符串 newPath)
然后,在事件查看器中有以下应用程序错误:
错误的应用程序 MyWindowsServiceName.exe,版本 1.0.0.0,时间戳 0x4b97f185,故障模块 mso.dll,版本 12.0.6425.1000,时间戳0x49d65443,异常代码0xc0000005,故障 偏移量 0x0000bd8e,进程 ID 0xa5c,应用程序启动时间 0x01cac08cf032914b.
这是进行转换的方法:
private int? Mdi2PDF(String path, String newPath)
{
int? pageCount = null;
string tmpTif = Path.GetTempFileName();
MODI.Document mdiDoc = new MODI.Document();
mdiDoc.Create(path);
mdiDoc.SaveAs(tmpTif,
MODI.MiFILE_FORMAT.miFILE_FORMAT_TIFF_LOSSLESS,
MODI.MiCOMP_LEVEL.miCOMP_LEVEL_HIGH);
mdiDoc.Close(false);
pageCount = Tiff2PDF(tmpTif, newPath);
if (File.Exists(tmpTif))
File.Delete(tmpTif);
return pageCount;
}
我从调用它的服务中删除了所有线程,因此只有主线程正在初始化 MODI 对象,但仍然出现错误,因此它似乎与线程无关。
我还构建了一个控制台应用程序,可以转换数百个文档,但没有遇到异常。
那么,这似乎是由于创建了太多 MODI 对象的实例,而只是在 Service 中实例化造成的?完全没有意义。
有人对这些错误以及如何进一步调试有任何线索吗?
【问题讨论】:
-
您知道哪个 MODI 调用失败了吗?当作为直接控制台应用程序而不是作为服务运行时,您是否会遇到同样的异常?
-
它在创建调用中(我已经用堆栈跟踪更新了问题)。我将启动并运行控制台应用版本。
标签: c# .net com file-conversion modi