none
Запуск Word в ASP.NET под IIS RRS feed

  • Общие обсуждения

  • Всех Приветствую!!!

    Пытаюсь запустить в фоне Word в ASP.NET под IIS...


                this.application = new ApplicationClass();
                string pathWord = HttpContext.Current.Server.MapPath("Word");
                this.application.Options.DefaultFilePath[WdDefaultFilePath.wdUserTemplatesPath] = pathWord;
                this.application.Visible = false;
                this.application.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                this.application.Options.SuggestSpellingCorrections = true;
    
                TWord = Type.GetTypeFromProgID("Word.Application"); // задает тип объекта
                com_app = Activator.CreateInstance(TWord); //создает экземпляр объекта
                doc = this.application.Documents.Add(ref template, ref newtemplate, ref docType, ref visible);
                doc.Activate();

    Код отрабатывает с ошибкой

    System.Runtime.InteropServices.COMException: Ошибка в Word. в Microsoft.Office.Interop.Word.Documents.Add(Object& Template, Object& NewTemplate, Object& DocumentType, Object& Visible)

    При этом на сервере сам Word запускается. А вот документ не создается.

    На своем компе под VisualStudio код отрабатывает хорошо, и ошибок нет.

    В чем может быть проблема?

    13 сентября 2015 г. 18:59

Все ответы

  • Добрый день.

    А не на сервере у вас все работает? Версия Office на компьютере на котором компилируете и на котором запускаете совпадает?

    P.s. Надо очень хорошо понимать что вы делаете, чтобы на сервере из IIS запускать через COM редакторы Work или Excel. Если вам нужно обрабатывать файлы, то лучше использовать OpenXML.

    14 сентября 2015 г. 6:14
    Отвечающий
  • Не на сервере все работает. На моей машине отрабатывает все отлично при отладке на IIS8 Express.

    Сервер Windows 2012, IIS 8

    Версия Office 2013 одинаковая и на моей машине и на сервере.

    Запускаю Word на сервере для того, чтобы в фоновом режиме проверить орфографию текста.

    14 сентября 2015 г. 6:31
  • Тут может быть масса проблем от отсутствия доступа к профилю пользователя до проблем с типом аппартамента потока (thread apartment state). 

    Я уже не говорю о сложностях лицензирования такого решения.

    К чему я все это? К тому что орфографию лучше проверять другим способом, например на клиенте. Если очень надо на сервере то возможно это будет лучшим вариантом:

    https://msdn.microsoft.com/en-us/library/windows/desktop/hh869852(v=vs.85).aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    14 сентября 2015 г. 6:40
    Модератор
  • доступа к профилю не требуется, это решается строчкой

     this.application.Options.DefaultFilePath[WdDefaultFilePath.wdUserTemplatesPath] = pathWord;
    

    помимо орфографии мне еще нужно получать исправленные слова, которые пользователь написал неправильно. Исправления слов мне даже больше нужно.

    14 сентября 2015 г. 6:57
  • Может в разрядности дело, кажем у вас процесс 32 битный, а office на сервере 64.

    Сделаем содержимое сообщества лучше, вместе!

    26 сентября 2015 г. 9:30
    Модератор
  • Скорее наоборот, у меня процесс 64 бит. Однако я проверял и с 32 и с 64 битным Office. Результат тот же :(
    26 сентября 2015 г. 9:36
  • А больше сведений об ошибке не удаётся найти, там может внутреннее исключение есть или, что-то более подробно пишется? И где вы пытаетесь создать файл?

    Сделаем содержимое сообщества лучше, вместе!

    26 сентября 2015 г. 9:48
    Модератор
  • Тут я даже не создаю, файл. Я запускаю Word, создаю в нем документ и в него подставляю текст, чтоб проверить орфографию и получить правильные словоформы на неправильные слова, потом этот текст забираю и Word выгружаю. Все это делается на сервере под IIS. Других ошибок я получить не могу.
    5 октября 2015 г. 8:56
  • Я имел ввиду подробности об ошибке. В логи Windows вы смотрели? Возможно туда пишется что-то, поконкретней, что сможет помочь.

    Сделаем содержимое сообщества лучше, вместе!

    5 октября 2015 г. 9:50
    Модератор