【问题标题】:Using Excel Component Works From Application But Not Windows Service使用 Excel 组件可从应用程序工作,但不能从 Windows 服务工作
【发布时间】:2011-11-11 08:27:24
【问题描述】:

我有一个自己托管 WCF 服务的 .NET Windows 服务。然后,此 WCF 服务继续调用在 Visual Studio 6 上用 ATL 编写的旧 COM 组件。此 COM 组件然后创建 Excel.Application COM 组件。它在这个 Excel COM 组件上调用各种方法,然后在其上调用 SaveAs 以完成文档的保存。此 SaveAs 方法调用失败。 Windows 服务作为本地系统运行,所以我认为这一定是一些权限问题。所以我更改了 Windows 服务,使其在我的用户帐户下运行(只需进入 services.msc,停止服务、属性、更改登录并重新启动服务)。但是,同样的问题仍然存在。

我创建了一个快速的 .NET Win Forms 测试应用程序,然后从那里运行 COM 组件。这工作正常。该应用程序在我的用户帐户下运行,所以我认为在我的帐户下运行 windows 服务会产生相同的效果。

Windows 服务有什么问题(即使它在我的用户帐户下运行)?我该如何解决这个问题?

【问题讨论】:

  • 当您在 WinForms 测试应用程序中进入“另存为...”时,是否会出现“另存为...”对话框窗口?
  • 你能比调用失败更具体吗?你怎么知道它失败了,错误信息是什么,它是如何表现出来的?

标签: c# .net excel com atl


【解决方案1】:

由于 Vista Windows 服务不允许做“桌面事情”(安全等)...另外办公自动化是 NOT supported by MS in this scenario...

您可以找到一些方法来规避这一切,但我强烈建议您采取另一条路线 - 对于 Office 文件,您可以使用来自 MS 的免费 SDK,名为 OpenXML SDK 2.0 - 您可以下载它 here

如果功能不够,还有其他免费和商业 SDK - 推荐一些有助于了解您的需求的东西。

【讨论】:

  • 谢谢。当我确定它以前在 XP 上工作时,我无法弄清楚它为什么会失败。 (现在在 Windows 7 上)。
猜你喜欢
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多