【问题标题】:Word Automation from IISIIS 中的 Word 自动化
【发布时间】:2015-01-27 15:37:00
【问题描述】:

我创建了一个使用 C# 启动 Word 进程 (Microsoft.Office.Interopt.Word) 的 Windows 应用程序。我加载了两个插件 word.AddIns.Add(@"C:\temp\addin.dot", true);。此代码在我的 Windows 应用程序中运行良好。

为了能够远程启动这个过程,我创建了一个 MVC Web 应用程序。 Web 应用程序使用相同的代码,但在我加载插件的部分失败:

错误: Word 无法打开此文档模板:(C:\temp\addin.dot)

Web 应用程序使用具有管理员权限和以下设置的应用程序池:

  • 启用 32 位应用程序:是的
  • 加载用户配置文件:是的

有人知道问题可能是什么吗?为什么相同的代码在 Web 服务器上的行为不同?

编辑:任务管理器向我显示 word 进程是使用正确的用户帐户启动的。当我启动 Windows 应用程序时,它与我使用的帐户相同。

【问题讨论】:

    标签: c# asp.net-mvc-4 iis word-2013


    【解决方案1】:

    Web 服务器并非旨在运行用户应用程序。由于您使用的是 COM 引用,因此该库需要运行应用程序才能执行操作。

    如果您希望自动生成/阅读文档,我的建议是使用像 DocX 这样的库。这将使您能够直接使用文件格式本身,而无需引入 COM 引用(互操作库)。

    【讨论】:

    • 我用它从 normal.dot 迁移不同的东西,比如自动文本、构建块等。此外,我打开旧模板(word 2003)检查它们是否有宏并将其保存为新模板(*.dotx / *.dotm)。
    • 如果它需要一个用户(interop 需要),你需要把它变成一个在用户上下文下运行的服务器,然后 Web 服务器可以访问它。但是 IIS 无法启动 word。
    • 我知道 IIS 并不是用来运行 word 之类的应用程序的。我评估了不同的库,如 DocX,但由于我们需要 word 中的特定功能,我们决定使用互操作。该网络应用程序将在线用于迁移目的,并且只能由一个用户执行,但可以远程执行。我在迁移过程中也做其他事情,并且所有这些都有效(如 Active Directory 操作、控制台应用程序的执行等)。
    • 事实上,这种服务器端办公自动化是官方禁止的,support.microsoft.com/en-ca/help/257757/… 提到了变通方法,如果像 DocX 这样的第三方解决方案确实支持在 IIS 上运行,通常是正确的选择。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    • 2010-09-22
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多