Создать MS-Word 2003 в WCF Ошибка? - PullRequest
       16

Создать MS-Word 2003 в WCF Ошибка?

1 голос
/ 20 сентября 2010

Я создал решение WCF для создания отчетов с использованием MS-Word 2003 API (Microsoft.Office.Interop.Word), но получил эту ошибку:

2010-09-17 16:31:39,218 [21] ERROR ERROR [(null)] - Error : Generate 0900000a80395799
System.Runtime.InteropServices.COMException (0x800706BA): The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
   at System.Runtime.InteropServices.CustomMarshalers.EnumeratorViewOfEnumVariant.MoveNext()
   at FactoryService.Generator.Generate(Task& task, IDfSession& mySession)
   at FactoryService.Generator.Generate(Object t)
2010-09-17 16:31:49,578 [22] ERROR ERROR [(null)] - Error generator timeout 0900000a80395799
2010-09-17 16:31:49,812 [14] ERROR ERROR [(null)] - Error : Generate 0900000a80395799
System.Runtime.InteropServices.COMException (0x800706BF): The remote procedure call failed and did not execute. (Exception from HRESULT: 0x800706BF)
   at Microsoft.Office.Interop.Word.ApplicationClass.get_Documents()
   at FactoryService.Generator.Generate(Task& task, IDfSession& mySession)
   at FactoryService.Generator.Generate(Object t)
2010-09-17 16:31:50,046 [18] ERROR ERROR [(null)] - Error : Generate 0900000a80395799
System.Runtime.InteropServices.COMException (0x800706BA): The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
   at Microsoft.Office.Interop.Word.ApplicationClass.get_Documents()
   at FactoryService.Generator.Generate(Task& task, IDfSession& mySession)
   at FactoryService.Generator.Generate(Object t)
2010-09-17 16:31:50,968 [22] ERROR ERROR [(null)] - Error generator timeout 0900000a80395799
2010-09-17 16:31:50,984 [10] ERROR ERROR [(null)] - Error : Generate 0900000a80395799
System.Runtime.InteropServices.COMException (0x800706BE): The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
   at Microsoft.Office.Interop.Word.Documents.Open(Object& FileName, Object& ConfirmConversions, Object& ReadOnly, Object& AddToRecentFiles, Object& PasswordDocument, Object& PasswordTemplate, Object& Revert, Object& WritePasswordDocument, Object& WritePasswordTemplate, Object& Format, Object& Encoding, Object& Visible, Object& OpenAndRepair, Object& DocumentDirection, Object& NoEncodingDialog, Object& XMLTransform)
   at FactoryService.Generator.Generate(Task& task, IDfSession& mySession)
   at FactoryService.Generator.Generate(Object t)

Я не знаю, почему этот API вызывает RPCСлужба и поддерживает ли она одновременную генерацию Word2003 на веб-сервере

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 20 сентября 2010

Автоматизация Word на стороне сервера (без пользовательского интерфейса) не поддерживается и приводит к очень странным проблемам. Для создания текстовых документов лучше использовать библиотеки OpenXml .

0 голосов
/ 22 ноября 2010

Использование любых продуктов Office из какой-либо службы не поддерживается, может нарушить вашу лицензию и, что еще хуже, просто не работает должным образом.Это настольные приложения, и они были написаны с предположением, что они используются одним человеком на настольном компьютере.Запустите их на сервере, и вы нарушите большое количество предположений.

0 голосов
/ 20 сентября 2010

У нас была такая же проблема, а затем мы переключились на создание текстовых документов в формате xml ( Обработка текстов ML ). Оказалось очень хорошо.

Но, в качестве альтернативы, вы могли бы, вероятно, уйти, создав службу Windows (не веб-службу). Служба Windows с соответствующими правами, вероятно, сможет использовать процесс Word.

Вам также необходимо проверить настройки DCOM на сервере: ControlPanel -> ComponentServices -> Computers -> MyComputer -> DCOM Config -> Microsoft Office Word ... затем открыть свойства и проверить параметры безопасности и удостоверения, используемые для запуска Word.

Если есть дальнейшие проблемы (как, вероятно, будет с взаимодействием), есть дополнительная помощь в отношении CLASSID реестра и т. Д., Но подождите, пока вы туда не попадете (мы не перешли к xslt для генерации слова xml без причины :)).

...