【问题标题】:Word automation server-side not workingWord 自动化服务器端不工作
【发布时间】:2015-12-01 01:46:33
【问题描述】:

前言:是的,我知道微软不建议这样做。但是,此服务器在严格限制的 VLAN 中面向内部。

目标是自动生成我无法使用 Office XML 正确格式化的特定类型的报告。 Microsoft 不推荐这样做的原因之一是用户帐户必须是交互式的(即不是 ASPNET)。因此,如果我将应用程序池标识设置为以用户身份运行,我将不再收到 COM 错误,但使用以下测试代码仍然无法打开 Word:

//Just checking if Word can be accessed
Word.Application app = new Word.Application();
app.Visible = true;

我没有收到任何错误,但 Word 无法打开。当我在使用 Visual Studio 调试的开发机器上使用它时,这很有效,但在部署时在我的测试机器上我什么也得不到。任何提示将不胜感激。

【问题讨论】:

  • 当您说 Word 无法打开时,您的意思是您没有看到 Word 的用户界面吗?

标签: c# asp.net iis ms-word office-interop


【解决方案1】:

即使应用程序池在用户帐户下运行,也不意味着它是交互式的并且可以访问您的桌面。您可以检查正在运行的进程列表以了解 Word 是否存在。

【讨论】:

  • 所以 WINWORD.EXE 被列出。由于某种原因,应用程序没有打开(即使使用 app.Visible = true),但仍然创建了文件。
【解决方案2】:

如您所知:在“类似服务器的场景”(IIS/ASP.NET 是一种特殊的场景)中,MS 不支持 Office 互操作/自动化...请参阅 KB257757

您的选项包括几个库(免费和商业) - 例如:

自 Windows Vista 以来,已经引入了一些更改来阻止任何 Windows 服务(IIS 只是一些特殊的服务)执行任何“类似桌面”的操作 - 这是由于安全问题...解决这种情况您需要规避 MS 实施的那些安全措施——我绝对不建议这样做......

【讨论】:

  • 执行 Word 自动化、厄运和悲观警告不需要 UI。
  • @RobertHarvey 取决于您使用的确切功能...但这不是重点恕我直言...请阅读我答案顶部的 MS 链接...
  • 我了解不支持也不推荐。但是,它仍然可以运行。 OpenXML 不适合高级格式化。正如我所提到的,我知道 MS 不支持它,但正如我所说的安全不是问题,这就是 MS 不推荐的原因)
  • @pendraggon87 安全并不是微软不支持它的唯一原因,还有技术原因和法律原因!
  • 更正法律问题。但是,由于这是一个小团队内部的,而且我们都有合法的许可证,所以没有法律问题。对于技术问题,肯定有性能问题,它可能会挂起等。这是一个丑陋的权宜之计,但管理层不想为 Apose 或其他商业产品掏腰包,至少在他们看到好处之前。这是一个奇怪的问题 22 - 他们在看到结果之前不会付款,但除非他们付款,否则很难显示结果。在那之前我一直坚持这个解决方案:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2012-05-05
  • 2018-03-11
相关资源
最近更新 更多