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

时间:2012-01-03 06:22:43

标签: c# asp.net ms-word ms-office office-interop

从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);

m_word.ActiveDocument从IIS运行时出错。它正在以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运行时发生错误。

3 个答案:

答案 0 :(得分:1)

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

这是非常成功的。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

  

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

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