получить ошибку при открытии MS Word DOC в IIS 7, - PullRequest
0 голосов
/ 21 октября 2011

Я разрабатываю некоторые страницы на Asp.Net, которые содержат открытие и чтение некоторых документов MS Word, это хорошо работает на моей VS 2010 на своем локальном хосте, но когда я помещаю файлы под wwwroot и запускаю страницы с помощью Inetmgr, я получаю эта ошибка:

Эта команда недоступна, поскольку ни один документ не открыт.

где, на ваш взгляд, проблема? добавить некоторые ссылки или изменить некоторые настройки в диспетчере IIS для работы с документами MS Word? как? спасибо:)

и вот как я пытаюсь открыть и прочитать документ с именем 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 ]

1 голос
/ 21 октября 2011

Как правило, учетные записи, на которых запущены веб-процессы, не имеют достаточных прав доступа для запуска приложений с графическим интерфейсом, таких как Word. Это, вероятно, хорошо в большинстве случаев, так как на самом деле не следует запускать приложения с графическим интерфейсом из веб-процессов. Что происходит, когда word вызывает модальное диалоговое окно, которое блокирует весь сайт, и никто не может зайти на веб-сервер и нажать OK. Если вы должны читать документы Word, библиотека является гораздо лучшим решением.

Все, что сказано, использование слова здесь не имеет смысла - вы просто загружаете некоторые стоп-слова из файла. Простой текст был бы столь же эффективным и намного легче иметь дело.

0 голосов
/ 21 октября 2011
string filePath =   "http://localhost:8777/stopwords.doc";

это не правильный путь к файлу.

попробуйте поместить файл в папку веб-приложения, например, создайте папку с именем WordDocs внутри места, где вы развернули приложение ASP.NET, а затем получите путь к файлу, например:

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

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