Я думаю, что проблема в том, что буфер обмена (который является взрывной операцией) требует использования потока STA COM.Вызовы WCF выполняются в потоках пула потоков, которые являются потоками MTA.
Раскрутите свой собственный поток с помощью класса Thread и установите для его ApartmentState значение ApartmentState.STA, а затем выполните автоматизацию Office оттуда.В таком случае проще всего будет блокировать ваш поток WCF до тех пор, пока автоматизация не будет завершена.
Однако следует помнить несколько вещей:
- Если у вас много одновременныхвызовов, вам нужно будет создавать пул потоков STA вместо того, чтобы каждый раз увеличивать поток.
- Для более высокой пропускной способности вы можете рассмотреть возможность сделать вашу операцию службы асинхронной и создать собственный IAsyncResult, который сигнализирует при автоматизациизавершено.Это позволит повторно использовать поток WCF во время автоматизации.