【问题标题】:.NET Framework generates strange DCOM error.NET Framework 生成奇怪的 DCOM 错误
【发布时间】: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? ://

标签: .net com interop ms-word


【解决方案1】:

重新安装 Office 2007 企业版。解决了这个问题。但真是头疼。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多