【发布时间】:2016-04-17 00:13:09
【问题描述】:
我遇到了一个经典场景,在 .NET 中(通过 Microsoft.Office.Interop.Word 程序集)创建 Word COM 对象时,即使我正确关闭和释放 WinWord 进程也不会退出对象。
下面是我的代码:
// Quit Word and release the ApplicationClass object.
if (oWordApp != null)
{
oWordApp.Quit(ref missing, ref missing,
ref missing);
oWordApp = null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
知道我为什么会遇到这个问题吗?不过我在本地没有这个问题。仅在生产服务器上。
【问题讨论】:
-
水晶球说:“不要将调试版本部署到生产服务器”。
-
您不能从服务器环境运行 Word。使用不同的技术重新设计您的应用程序。这是一场等待发生的技术灾难,并且(取决于您的用户)它可能违反了您的 Office 许可证。 Word 被设计和测试为在控制台上与人类交互的环境中运行。它真的会在非交互式服务中意外崩溃和烧毁。见support.microsoft.com/en-us/kb/257757。此外,this 是已经涵盖此问题的众多 SO 答案之一。
标签: c# .net com ms-word office-interop