ASP.net C# - WINWORD.exe

标签 asp.net ms-office

我正在使用 ASP.NET/C# 程序中的 Microsoft Word 文档。

我的程序在内部打开 Word 文档。使用

app = new Word.Application();
app.Documents.Open

它创建了一个winword.exe进程的实例,我可以在任务管理器中看到它。

即使我使用 close()app.quit() 关闭 Doc。它应该杀死该进程。但这个进程不会被杀死。

知道如何以编程方式终止此进程。

最佳答案

首先,我同意 Arthur 和 Ivo 的观点:不要在服务器上使用 Word 自动化...它不受支持,而且很痛苦。

  1. 如果可以,请尝试通过 DOCX 格式支持 Word 输入/输出(fully documented XML format 使用 .NET Framework 支持的压缩进行打包,并受 Office 2007 之前版本的插件支持)
  2. 如果不创建一个服务来处理队列中的请求,以防止多个线程同时使用它(ala Ivo's answer )

如果您必须使用Word自动化:

  1. 确保您设置尽可能多的应用程序选项以防止出现对话框
  2. 确保您传入 WdSaveOptions.wdDoNotSaveChangesDocument.Close
  3. 查看此文档:How To: Dismiss a Dialog Box Displayed by an Office Application with Visual Basic .NET (显然也适用于 C#)
  4. 请务必调用 Marshal.ReleaseComObject Document 和 Application 对象,并确保它位于 finally block 中。

如果您按照上述操作,winword.exe 应该消失,您不需要终止该进程。

编辑:实际上并不是您问题的答案,但仍然与主题相关。请记住,您还会在服务器上遇到权限问题。确保为其创建特定用户并将该用户用作您的 AppPool 身份(或服务身份)。然后您需要执行以下操作:

  1. 显然,请确保您已安装自动化组件
  2. 运行“dcomcnfg”
  3. 组件服务 -> 计算机 -> 我的计算机 -> COM+ 应用程序
  4. “Microsoft Word 文档”(或“{000209FF-0000-0000-C000-000000000046}”)-> 属性
  5. “安全”选项卡 ->“启动和激活权限”->“自定义”
  6. 点击“编辑”并从上方添加您的 AppPool 用户
  7. 重复步骤 5-6,但选择“访问权限”

最重要的是,尽管有上面的对话框选项,您仍然可能需要以 AppPool 用户身份直接从服务器运行一次 winword.exe 来初始设置配置文件。

关于ASP.net C# - WINWORD.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1828599/

相关文章:

VBA Document.Protect 未设置 wdProtectionType (Office 2007)

javascript - Office加载项js扩展更改文档名称

asp.net - 偶发的 ASP.NET 数据错误 : "Cannot find table 0"

c# - 如何为正则表达式指定可选字符?

asp.net - 多边形的国家行政级别

silverlight - 在哪里可以找到 Office Web 应用程序的 xap 文件?

Excel - 如何格式化特定列中 n 单元格的文本

c# - 将 Ajax 工具包脚本移动到页面底部

asp.net - 使用 Javascript 设置 ModalPopupExtender "Y"属性

ms-office - 如何在 C# 中运行时连接到 Outlook 2010?