Microsoft.Office.Interop是否可以安全地用于(文件转换)网站?

我正在编写一个关于女巫用户必须添加报告(Word文档)的网站,并且可以查看它们我将* .doc转换为* .pdf,然后通过pdf.js显示它们。 对于转换我使用Microsoft.Office.Interop.Word。 代码看起来像

public void ConvertDocument(string PATH) { FileInfo FILE = new FileInfo(PATH); if (FILE.Extension.ToLower() == ".doc" || FILE.Extension.ToLower() == ".docx" || FILE.Extension.ToLower() == ".docm" || FILE.Extension.ToLower() == ".dotx" || FILE.Extension.ToLower() == ".dotm") { if (FILE.Length == 0) { return; } object oMissing = System.Reflection.Missing.Value; Word.Application word = new Word.Application(); try { word.Visible = false; word.ScreenUpdating = false; Object filename = (Object)FILE.FullName; Word.Document doc = word.Documents.Open(ref filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); try { doc.Activate(); object outputFileName = FILE.FullName.Replace(FILE.Extension, ".PDF"); doc.SaveAs(ref outputFileName, Word.WdSaveFormat.wdFormatPDF, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); } finally { object saveChanges = Word.WdSaveOptions.wdDoNotSaveChanges; ((Word._Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing); doc = null; } } finally { ((Word._Application)word).Quit(ref oMissing, ref oMissing, ref oMissing); word = null; } File.Delete(PATH); } } 
  1. 这样安全吗?
  2. 它将处理多少用户?
  3. 它需要什么资源?
  4. 我应该在服务器上安装MS Office来运行网站吗?
  5. 这实际上是一个很好的方法吗?

来自微软的答案是否定的:

Microsoft目前不推荐也不支持任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)的Microsoft Office应用程序自动化,因为Office可能会出现不稳定的行为和/或Office在此环境中运行时出现死锁或死锁。

从Office的服务器端自动化的考虑

根据经验,我们遇到的问题如下:

  • 当进程意外地存在时,会留下很多Word实例,并且永远不会被清除
  • 在处理会话中途发生关闭后,Word安装已损坏
  • 它的扩展性不是很好–Word是一个大型桌面应用程序,它的function非常出色; 但是,它并不真正意味着您正在使用它的过程,因此,打开它的大量实例将消耗您的应用程序可以使用的资源。

但是,还有其他方法可以执行此操作,如StackOverflow问题和答案中所述

您可以考虑预先转换单词文档 – 例如,在上载文档时,是否可以创建PDF? 这样,您的服务器只是提供PDF文档,并且在处理请求时只需做很少的工作。