在IIS 7中打开MS Word doc时出错

时间:2011-10-21 12:02:36

标签: asp.net iis ms-word .doc

我正在开发Asp.Net的一些页面,其中包含打开和阅读一些MS word文档,它在我自己的本地主机上的VS 2010中运行良好但是当我把文件放在wwwroot下并运行Inetmgr的页面时我得到了这个错误:

  

此命令不可用,因为没有文档打开。

你觉得问题出在哪里?我应该在我的IIS管理器中添加一些引用或编辑一些设置来使用MS word docs吗?怎么样?谢谢:))

这就是我试图打开并阅读名为stopwords.doc

的文档的方式
static extractor()
    {
        try
        {
            ApplicationClass wordApp = new ApplicationClass();
            string[] words;
            char[] delimiterChars = { ' ', ',', '.', '\r', '\t', '\n' };
            string filePath =   "http://localhost:8777/stopwords.doc";
            object file = filePath;
            object nullobj = System.Reflection.Missing.Value;                
            Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref file,
            ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
            ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
            ref nullobj);
            Microsoft.Office.Interop.Word.Document doc1 = wordApp.ActiveDocument;
            string m_Content = doc1.Content.Text;
            doc.Close(ref nullobj, ref nullobj, ref nullobj);
            if (m_Content != null)
            {
                words = m_Content.Split(delimiterChars);
                foreach (string s in words)
                {
                    if (!stopwords.ContainsKey(s))
                        stopwords.Add(s, s);
                }
            }

        }
        catch (Exception)
        {
            throw;
        }

    }

2 个答案:

答案 0 :(得分:1)

通常,运行Web进程的帐户没有足够的操作系统权限来运行像Word这样的GUI应用程序。在大多数情况下,这可能是一件好事,因为实际上不应该从Web进程运行GUI应用程序。当word弹出一个阻止整个站点的模式对话框并且没有人可以访问Web服务器并单击OK时会发生什么。如果你必须阅读word文档,库是一个更好的解决方案。

所有这一切,在这里使用word是没有意义的 - 你只是从文件中加载一些停用词。纯文本同样有效且更容易处理。

答案 1 :(得分:0)

string filePath =   "http://localhost:8777/stopwords.doc";

这不是有效的文件路径。

尝试将文件放在Web应用程序文件夹中,例如在部署ASP.NET应用程序的位置创建一个名为WordDocs的文件夹,然后获取如下文件路径:

string filePath = Server.MapthPath("~/WordDocs/stopwords.doc");

if(File.Exists(filePath))
{
  object file = filePath;
  object nullobj = System.Reflection.Missing.Value;
  ...
}