【发布时间】:2011-01-28 09:32:29
【问题描述】:
我正在创建一个简单的应用程序,它可以合并 Word 和/或 Excel 文档中的键值对字段。直到今天,该应用程序运行良好。我正在使用最新版本的 .NET Framework 4.0(因为它为 Interop 提供了一个很好的包装 API)。我的示例合并方法如下所示:
public byte[] ProcessWordDocument(string path, List<KeyValuePair<string, string>> kvs)
{
logger.InfoFormat("ProcessWordDocument: path = {0}", path);
var localWordapp = new Word.Application();
localWordapp.Visible = false;
Word.Document doc = null;
try
{
doc = localWordapp.Documents.Open(path, ReadOnly: false);
logger.Debug("Executing Find->Replace...");
foreach (Word.Range r in doc.StoryRanges)
{
foreach (KeyValuePair<string, string> kv in kvs)
{
r.Find.Execute(Replace: Word.WdReplace.wdReplaceAll,
FindText: kv.Key,
ReplaceWith: kv.Value, Wrap: Word.WdFindWrap.wdFindContinue);
}
}
logger.Debug("Done! Saving document and cleaning up");
doc.Save();
doc.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
localWordapp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(localWordapp);
logger.Debug("Done.");
return System.IO.File.ReadAllBytes(path);
}
catch (Exception ex)
{
// Logging...
// doc.Close();
if (doc != null)
{
doc.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
}
localWordapp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(localWordapp);
throw;
}
}
上面的 C# sn-p 运行良好(编译并部署到 Windows Server 2008 x64)并安装了最新更新。但是现在,突然,我收到以下奇怪的错误:
System.Runtime.InteropServices.COMException (0x80080005):检索具有 CLSID {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80080005 服务器执行失败(来自 HRESULT 的异常: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))。 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandleInternal& ctor,Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(布尔 publicOnly,布尔 skipCheckThis,布尔 fillCache) 在 System.RuntimeType.CreateInstanceDefaultCtor(布尔 publicOnly,布尔skipVisibilityChecks,布尔skipCheckThis,布尔fillCache) 在 System.Activator.CreateInstance(类型类型,布尔非公共) 在 C:\meeho\src\webservices\Meeho.Integration\OfficeHelper.cs:line 30 中的 Meeho.Integration.OfficeHelper.ProcessWordDocument(String path, List`1 kvs) 在 Meeho.IntegrationService.ConvertDocument(Byte[] template, String ext, String[] fields, String[] values) 在 C:\meeho\src\webservices\MeehoService\IntegrationService.asmx.cs:line 49
-- 我用谷歌搜索了 COM 错误,但它没有返回任何特殊价值。我什至使用 mmc -32 为 COM dll 提供了正确的权限,我分别分配了 Word 和 Excel 文档并将执行权限设置为管理员。但是,我无法通过上面给出的确切 COM CLSID 找到 dll。非常令人沮丧。
请,请,请帮助我,因为该应用程序目前已停止生产。
安德斯
编辑:Windows 事件日志的输出: 错误应用程序名称:WINWORD.EXE,版本:12.0.6514.5000,时间戳:0x4a89d533 故障模块名称:未知,版本:0.0.0.0,时间戳:0x00000000 异常代码:0xc0000005 故障偏移量:0x00000000 错误进程ID:0x720 错误应用程序启动时间:0x01cac571c4f82a7b 错误的应用程序路径:C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE 故障模块路径:未知 报告 ID:041dd5f9-3165-11df-b96a-0025643cefe6
- 1000 2 100 0x80000000000000 2963 应用 米霍3 - WINWORD.EXE 12.0.6514.5000 4a89d533 未知 0.0.0.0 00000000 c0000005 00000000 720 01cac571c4f82a7b C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE 未知 041dd5f9-3165-11df-b96a-0025643cefe6
【问题讨论】:
-
windwows 事件日志中的任何内容?
-
你好。我添加了上面 Windows 事件日志的输出。
-
只是一个想法。 word 和 excel 等是否仍然正常工作?需要重新安装吗?
-
工作也无法正常工作。手动启动它会产生以下结果: 问题签名:问题事件名称:BEX 应用程序名称:WINWORD.EXE 应用程序版本:12.0.6514.5000 应用程序时间戳:4a89d533 故障模块名称:未知故障模块版本:0.0.0.0 故障模块时间戳:00000000 异常偏移:00000000 异常代码:c0000005 异常数据:00000008 操作系统版本:6.1.7600.2.0.0.400.8 区域设置 ID:1030 有关问题的其他信息:LCID:1030 品牌:Office12Crash skulcid:1030
-
您是否建议重新安装 Word? ://