使用Micorsoft.Office.Interop(对象库)通过IIS 7读取word doc时出错

当从IIS运行代码时,我在阅读文档时遇到问题。 它不是在阅读文档并抛出错误“在尝试保存activedocument时没有文档是opne。”。

m_word.Documents.Open(ref FileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); m_word.ActiveDocument.SaveAs2(ref FileName_rtf, ref FileFormat, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1); 

从IIS运行时,m_word.ActiveDocument出错。 它在visual studio调试模式下工作。

我也试过下面的代码:

  Document doc_open = m_word.Documents.Open(ref FileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); doc_open.Activate(); 

doc_open正在重新返回null,并在第二行中抛出对象引用错误。 这在代码处于调试模式时有效。 从我们有IIS 7和MS办公室的开发服务器上的IIS运行时发生错误。

添加: C:\Windows\SysWOW64\config\systemprofile\Desktop

这是非常成功的。

可能是由于安全设置,请查看此 http://support.microsoft.com/kb/257757/en-us 。 在服务器上使用interop不是一个好主意,你可以看看openxml sdk等其他选项

不要这样做,它没有得到官方的支持(由我强调):

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

资料来源: MS KB 257757 。 本文还包含一系列替代解决方案。 如果所有其他方法都失败了,您可能不得不求助于理解Word格式的第三方库。