如何将WCF项目中的Com对象带到服务器
本文关键字:对象 Com 服务器 WCF 项目 | 更新日期: 2023-09-27 18:00:47
我向服务器发布了WCF服务,它在本地工作,但在服务器中我收到了以下错误:
Retrieving the COM class factory for component with CLSID.
该服务的工作是在单词模板中添加一些字段,并将其转换为pdf。我的猜测是它在服务器中找不到com对象。我在项目中提到的一个对象是
Microsoft.Office.Interop.Word
我已经添加了这个作为对我的项目的引用。我应该怎么做才能在服务器中安装这个对象?
Microsoft.Office.Interop.Word
不是设计为在非交互式会话中运行的(例如,在自托管服务或IIS中,在服务器上托管WCF的两种方式)。即使你确实运行了你的代码,你也会开始遇到上面链接中列出的其他问题。
您需要切换到Open XML SDK才能在服务器设置中操作word文档。
编辑:虽然没有直接关系,但看看我的这个老问题,我在哪里犯了和你一样的错误(使用Word自动化在Sharepoint web服务中进行文本替换)。在我发布的关于自己问题的答案中,我有一些关于如何使用OpenXMLSDK替换文本的示例代码。
using (WordprocessingDocument template = WordprocessingDocument.Open(documentStream, true))
{
template.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
MainDocumentPart mainPart = template.MainDocumentPart;
mainPart.DocumentSettingsPart.AddExternalRelationship(
"http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate",
new Uri(templetAddr, UriKind.Absolute));
ReplaceText(mainPart, "#PracticeName#", PracticeName);
if(!String.IsNullOrEmpty(EducationDate))
ReplaceText(mainPart, "#EducationDate#", EducationDate);
if(!String.IsNullOrEmpty(MainContactInfo))
ReplaceText(mainPart, "#MainContactInfo#", MainContactInfo);
if(!String.IsNullOrEmpty(Address))
ReplaceText(mainPart, "#Address#", Address);
}
几年前,我在Visual Studio的项目属性/"构建"选项卡中遇到过这个问题:
设置平台目标=X86
如果有效,请告诉我。
我同意使用Word Interop的Office自动化不是一个好方法,而OpenXML是最好的方法。但由于它非常复杂,我的建议是查看使用OpenXML的第三方工具包。这样,您就不必花时间学习OpenXML。
尝试搜索"邮件合并和报告工具包"。理想情况下,模板文档应该使用MS Word进行设计或更改,即使是最终用户。该工具包应易于与直观的API一起使用。