Office 2013互操作服务器2012:文字冻结主机

本文关键字:文字 冻结 主机 2012 2013 互操作 服务器 Office | 更新日期: 2023-09-27 18:04:12

首先介绍一下背景知识:我知道在服务器环境中不支持MS Office互操作。我被告知无论如何都要让它工作。

我从一个离开公司的开发人员那里继承了一个项目。该项目涉及转换任意1-2页的文件上传到我们的网站由用户到PDF格式。这些文档主要是各种Office文档。我们接受doc、docx、txt和rtf文档,可能还有其他格式。这些文件必须在晚些时候以原始格式和PDF格式提供。开发人员认为,实现这一目标的最佳方法是使用MS Office互操作,并让Word处理转换。

在他的工作站和我的工作站上,它工作得很好,但是一旦网站发布到服务器上,它就会失败。但它不仅仅是失败,Word打开并消耗越来越多的内存,直到它最终锁定服务器,服务器必须进行电源循环。

我已经为这件事绞尽脑汁好一阵子了。我发现有问题的大多数在线用户都报告了错误消息,但我还没有发现有人报告服务器只是被锁住了。然而,我在三个不同的服务器上观察到完全相同的行为。我尝试将代码包装在windows服务中(而不是IIS中的aspx页面),并观察到相同的行为。我将代码包装在一个winforms应用程序中,它工作得很好。要点如下:

    Dim wordApplication As Microsoft.Office.Interop.Word.ApplicationClass = New ApplicationClass()
    Dim wordDocument As Microsoft.Office.Interop.Word.Document = Nothing
    Try
        wordDocument = wordApplication.Documents.Open(CType(fileUrl, Object), False, True)
        If wordDocument IsNot Nothing Then
            wordDocument.ExportAsFixedFormat(pdfUrl, WdExportFormat.wdExportFormatPDF)
        End If
    Finally
        If wordDocument IsNot Nothing Then
            wordDocument.Close(False)
            wordDocument = Nothing
        End If
        If wordApplication IsNot Nothing Then
            wordApplication.Quit()
            wordApplication = Nothing
        End If
        GC.Collect()
        GC.WaitForPendingFinalizers()
        GC.Collect()
        GC.WaitForPendingFinalizers()
    End Try

有其他人处理过这样的问题吗?

Office 2013互操作服务器2012:文字冻结主机

解决这个问题需要几个步骤:

显示冻结是由wordApplication.Quit()调用引起的。传入False以抑制保存对话框解决冻结问题。但文件仍然没有打开……

为此,我必须打开windows'System32'comexp。然后选择"控制台根">"组件服务">"计算机">"我的计算机">"DCOM配置">"Microsoft Word 97 - 2003文档"的"属性"上下文菜单选项。在"身份"选项卡上,选择"交互用户",而不是"启动用户"。

在另一个服务器上,这就是我所要做的解决问题,但如果这还不够,这个线程有许多其他可能的解决方案:https://social.msdn.microsoft.com/forums/en us/0f5448a7 - 72 - ed - 4 - f16 - 8 b87 - 922 - b71892e07/word - 2007 - documentsopen -返回-空- aspnet