Не удается создать документ Word в службе WCF

#c# #wcf

#c# #wcf

Вопрос:

я использую службу WCF для отправки почты с вложением. в этой службе WCF я создаю один документ word, помещая некоторые данные в этот документ. и прикрепляю это как вложение к почте. при создании документа word я получаю следующую ошибку:

Сервер обнаружил ошибку при обработке запроса. Сообщение об исключении «Доступ запрещен».. Смотрите журналы сервера для получения более подробной информации. Трассировка стека исключений является:

 at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]amp; outputs) 
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpcamp; rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpcamp; rpc) 
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpcamp; rpc) 
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
  

кто-нибудь, пожалуйста, может помочь в этом

Комментарии:

1. Лучше покажите код, касающийся жизненного цикла документа. Но запуск Word на любом сервере никогда не является хорошей идеей.

2. вы проверили права доступа к папке для пользователя, который запускает службу WCF? На всякий случай, если это проблема с разрешениями.

3. Контекст, в котором запущена служба (локальная система?), Вероятно, не имеет доступа к запуску word. Я предполагаю, что если вы запустите этот же код в приложении Windows, это сработает. Я думаю, все зависит от того, как он размещен.

4. В качестве предложения, если вы ориентируетесь хотя бы на Word2003, вам следует подумать о создании XML-документа, который можно легко сгенерировать «на лету», и вам не требуется установка Office на сервер.

Ответ №1:

Я нашел эту статью весьма полезной для msdn. Я думаю, что это из 2009, но я думаю, что это все еще точно в вашем сценарии. Это в основном объясняет, что Microsoft на самом деле не поддерживает такого рода вещи и альтернативы, которые вы можете сделать.

Если вы должны использовать подобную автоматизацию в своей службе wcf, я бы рекомендовал запустить службу под учетной записью, которая имеет доступ к запуску word. Я не слишком знаком с wcf, но я предполагаю, что это можно сделать.